2014-04-02 55 views
1

我试图让最后插入的记录被显示。此刻,我试图回应我最后插入的ID的绑定值。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); 

就是IM结合的新的子记录到$ newChild对象。我只使用最后一个插入ID为一个单独的表格im让这将自动生成一旦孩子和父记录被插入。这是所有工作正常...没有得到任何错误。

现在我的问题:我试图使用相同的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; ?>""; 

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

任何帮助将是伟大的。

谢谢。

+4

这是***语法错误***。对于这些和一般的PHP错误消息的理解帮助,请首先参考以下参考问题:[参考 - 此错误在PHP中意味着什么?](http://stackoverflow.com/questions/12769982/reference-what-这个错误意味着在PHP中) – hakre

+1

使用与'$ newchild'字段一样的''准备'和'绑定'与前面的代码一样。 – Spudley

回答

0

删除PHP标签,因为您已经在PHP标签中。此外,您的ORDER BY子句需要在WHERE子句后出现

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

这是我想到的第一件事,但我得到错误“错误:SQLSTATE [42000]:语法错误或访问冲突:1064您的SQL语法错误;检查与您的MySQL服务器版本对应的手册在使用上面的'where childid = 66'第1行'附近使用正确的语法。 – user3007858

+0

只是注意到你的ORDER BY是在错误的地方,你需要将它移动到where子句后面where childid = $ newchild ORDER BY LName,FName' – RMcLeod

+0

谢谢你。对我来说愚蠢的错误。 – user3007858