LastInsertId PHP
Я пытаюсь получить последнюю вставленную запись для отображения. В данный момент я пытаюсь повторить мое привязанное значение для последнего вставленного идентификатора.
$stmt= $dbh->prepare("INSERT INTO child (FName, LName, Age, Sex, Allergies) values (:FName, :LName, :Age, :Sex,:Allergies)");
$stmt->bindValue(':FName', $_POST['FName'], PDO::PARAM_STR);
$stmt->bindValue(':LName', $_POST['LName'], PDO::PARAM_STR);
$stmt->bindValue(':Age', $_POST['age'], PDO::PARAM_STR);
$stmt->bindValue(':Sex', $_POST['sex'], PDO::PARAM_STR);
$stmt->bindValue(':Allergies', $_POST['allergies'], PDO::PARAM_STR);
$add1=$stmt->execute();
$newchild=$dbh->lastInsertid();
Выше просто создает запись
$stmt=$dbh->prepare("INSERT INTO pcdetails (childID, parentID) values ( :newchild, :newparent)");
$stmt->bindValue(':newchild', $newchild, PDO::PARAM_STR);
Где я связываю новую дочернюю запись с $newchild. Я использую только последний идентификатор вставки для отдельной таблицы, которую я делаю, которая будет автоматически генерироваться после вставки дочерней и родительской записи. Это все работает правильно... Не получаю никаких ошибок.
Теперь к моей проблеме: я пытаюсь использовать тот же bindValue, чтобы повторить прошлую запись, которая была вставлена в базу данных.
Все время я просто использую запрос, который будет отображать все записи:
$sql = "select child.childid, FName, LName, age, sex, allergies from child ORDER BY LName, FName
Но я хочу просто показать последнюю запись.
Я пробовал следующее:
$sql = "select child.childid, FName, LName, age, sex, allergies from child ORDER BY LName, FName where childid = "<?php echo $newchild; ?>"";
Но я получаю ошибку "Ошибка разбора: синтаксическая ошибка, неожиданное '?'". Я не уверен, почему я получаю эту ошибку.
Любая помощь будет отличной.
Благодарю.
1 ответ
Удалите теги PHP, как вы уже внутри тегов PHP. Кроме того, ваше предложение ORDER BY должно идти после предложения WHERE
$sql = "select child.childid, FName, LName, age, sex, allergies
FROM child
WHERE childid = $newchild
ORDER BY LName, FName";