LastInsertId PHP

时间:2014-04-02 09:01:59

标签: php mysql sql lastinsertid

我试图显示最后插入的记录。目前我正在尝试为最后插入的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; ?>"";

但我得到错误“解析错误:语法错误,意外'?'”。我不知道为什么我会收到这个错误。

任何帮助都会很棒。

感谢。

1 个答案:

答案 0 :(得分:0)

删除PHP标记,因为您已经在PHP标记中。您的ORDER BY子句也需要在WHERE子句

之后
$sql = "select child.childid, FName, LName, age, sex, allergies 
           FROM child 
           WHERE childid = $newchild
           ORDER BY LName, FName";