2014-10-12 58 views
0

我使用PDO更新了數據庫中的一行。獲取PDO中更新的行的ID

$stmt = $db->prepare("UPDATE product SET price=? WHERE seller=?"); 
      $stmt->execute(array(456,"Apple")); 

這並沒有爲我工作

$updated_id = $db->lastInsertId(); 

我怎樣才能對更新的行的ID。

+0

只有1與賣家產品=蘋果 – 2014-10-12 05:07:31

+0

哦好吧,我不認爲你可以在一個查詢中得到這些ID,你需要選擇那些,最後插入ID屬於最後插入 – Ghost 2014-10-12 05:09:27

+0

只是先選擇ID,然後更新(反之亦然) – 2014-10-12 05:16:05

回答

1

您可以做的最好的方法是使用PDO::rowCount()來獲取受影響的行數。請記住,您的更新聲明可能不會只更新一個,所以,沒有辦法只獲得一個ID。

+0

在我的情況下,只有一行將被更新,show是否有任何解決方案? – 2014-10-12 05:08:15

+0

如果您知道要更新一行,可以使用提供給它的數據重新進行查詢。從價格=?的產品中選擇ID賣方=? – brian 2014-10-12 05:09:26

+0

是的,它的工作,我也一樣。 我在表格中有6行。現在我想查詢並找到狀態爲1的產品,然後在其中我想爲第一個結果指定「Apple」。我該怎麼做? – 2014-10-12 05:15:57

0

請看看這個答案 How to get ID of the last updated row in MySQL?

或者做一個選擇同一where子句(如果你認爲它會只有一個記錄)

$stmt = $db->query("SELECT id FROM product WHERE seller=:seller"); 
$stmt->bindParam(':seller', $sellerName, PDO::PARAM_STR) 
$row =$stmt->fetchObject(); 
echo $row->id;