2014-04-02 58 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