LastInsertId PHP [关闭]
Posted
技术标签:
【中文标题】LastInsertId PHP [关闭]【英文标题】:LastInsertId PHP [closed] 【发布时间】:2014-04-02 09:01:59 【问题描述】:我正在尝试显示最后插入的记录。目前我正在尝试为最后插入的 id 回显我的绑定值。
$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 的位置。我只使用最后一个插入 id 来制作一个单独的表,一旦插入子记录和父记录,它将自动生成。这一切都正常工作......没有任何错误。
现在我的问题是:我尝试使用相同的 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; ?>"";
但我收到错误“解析错误:语法错误,意外'?'”。我不确定为什么会出现此错误。
任何帮助都会很棒。
谢谢。
【问题讨论】:
这是一个语法错误。对于那些和理解一般 PHP 错误消息的帮助,请先参考以下参考问题:Reference - What does this error mean in PHP? 将prepare
和bind
与$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";
【讨论】:
这是我想做的第一件事,但我收到错误“错误:SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;请查看手册对应于您的 mysql 服务器版本,以便在第 1 行的“where childid = 66”附近使用正确的语法。 刚刚注意到您的 ORDER BY 位于错误的位置,您需要将其移动到FROM child WHERE childid = $newchild ORDER BY LName, FName
之后的位置
谢谢,就是这样。我犯了一个愚蠢的错误。以上是关于LastInsertId PHP [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
PHP OOP - 从两个函数返回 lastInsertId