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? preparebind$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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将lastinsertid分配给变量[关闭]

PHP OOP - 从两个函数返回 lastInsertId

使用左填充 PHP MYSQL 获取 lastInsertId

PHP PDO::lastInsertId 返回 0

无法让 PHP lastInsertId() 使用此设置

PDO:lastInsertId 返回啥值? [复制]