Задать вопрос

Как получить запись по ID через lastInsertId сразу после вставки?

Здравствуйте!

Есть такой запрос вставки и получение последнего ID:
$stmt = $db->prepare("INSERT INTO users (name, email) VALUES ('Иван', 'test@test.com')");
$stmt->execute();
$lastId = $db->lastInsertId();


Сразу за ним, вызывается SELECT по последнему ID:
$stmt = $db->prepare('SELECT * FROM users WHERE id = ? LIMIT 1');
$stmt->execute([$lastId]);


Но получаю ошибку:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 173 LIMIT 1' at line 1


Несколько часов не могу понять в чем проблема. Уже подумал, что может какая-то проблема в окружении, но даже не знаю. -куда смотреть. Гугл не помог. Использую MariaDb 106

UPD.
В итоге, почему-то ошибка была из-за одинарных кавычек в значениях вставки. Заменил одинарные кавычки на обратные и все сразу заработало. Причем пробовал в песочницах - проблемы не было. Скорее всего у меня что-то с локальным окружением все-таки.
Всем большое спасибо за участие!
  • Вопрос задан
  • 117 просмотров
Подписаться 1 Простой 5 комментариев
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
MySQL показывает текст запроса начиная с той позиции, где возникла ошибка. Похоже, что ему не нравится пробел между users и WHERE. Попробуйте удалить этот фрагмент и набрать снова, может затесался какой-то неотображаемый символ.
Ответ написан
402d
@402d
начинал с бейсика на УКНЦ в 1988
Тупой вопрос. А в таблице есть первичный ключ (primary,autoincrement) ?
Обычно поле называют id и тип у него длинное целое
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы