$query = $database->prepare("UPDATE table SET value = value WHERE value = '$value'");
$query_1->execute();
$database->connection->lastInsertId();
Код выше не работает. Значение, которое я пытаюсь получить — это автоинкремент первичного ключа.
Как подсказывает lastInsertId () по имени, он может быть предназначен только для вставки. Если да, то как правильно достичь той же цели в ОБНОВЛЕНИИ?
Значение, которое я хочу вернуть, является первичным ключом таблицы, если произошло обновление.
Что-то вроде..
lastUpadteId()$query_1 = $database->connection->prepare("UPDATE accounts SET traffic = traffic + '$file_size', id = LAST_INSERT_ID(id) WHERE primary_key = '$account_id'");
$query_1->execute();
echo $database->connection->lastInsertId();
Броски …
Неустранимая ошибка: необработанное исключение ‘PDOException’ с сообщением ‘SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец’ id ‘в’ списке полей » в
LAST_INSERT_ID () не работает с UPDATE, так как работает с INSERT. Но вы все равно можете получить идентификатор обновленной строки, используя LAST_INSERT_ID () после обновления. Вот как должен быть написан ваш запрос:
UPDATE table
SET
value = value,
primary_key = LAST_INSERT_ID(primary_key)
WHERE value = 'some value'
Это выглядит странно для вас primary_key = LAST_INSERT_ID(primary_key)
? Тогда прочитайте это из Руководства MySQL: http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
В вашем заявлении может быть обновлено более одной записи. Так что получить последний идентификатор обновления не очень хорошая идея.
Вы можете использовать оператор SELECT, чтобы получить весь идентификатор до Обновить.
SELECT ID FROM table WHERE value = '$value'