2013-02-15 96 views
-1

我遇到了返回0的lastInsertID問題。它在另一個頁面中工作,所以我在這裏出錯了。PDO lastInsertID正在返回0

以下內容位於try/catch塊中。

$idCount = "42"; 
/** set the database **/ 
$db = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass); 
/** set the error reporting attribute **/ 
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);    
$stmt = $db->prepare("SELECT image1 FROM items WHERE `id` = :id");  
/** bind the parameters **/ 
$stmt->bindParam(':id', $idCount, PDO::PARAM_STR); 
$stmt->execute();     
$idCount = $db->lastInsertId(); 
echo $idCount; 
+0

如果u想從項目 – 2013-02-15 03:18:15

回答

2

功能名稱->lastInsertId()應該給你提示SELECT語句通常不會設置最後一個插入ID。

通常,只有具有auto_increment列的表上的INSERT語句纔會顯示該行爲。

也有例外,雖然,當使用LAST_INSERT_ID(expr)如:

SELECT LAST_INSERT_ID(`id`) AS `id`, image1 FROM items WHERE `id` = :id 
+0

謝謝,這很好! – 2013-02-15 03:41:05

+0

非常有趣我也在尋找這個解決方案。 – kabuto178 2013-02-15 04:45:45

2

lastInsertId()只有在實際進行插入操作時纔會返回最後一個插入ID。你只是在做一個select

+0

阿拜獲得ID。剛做選擇MAX(ID)的最大值,是有什麼辦法沒有做插入得到最後插入的ID? – 2013-02-15 03:19:59

+1

這不是嚴格正確的;最後一個插入ID可以通過其他方式填充,而不是所有插入都會設置最後一個插入ID值。 – 2013-02-15 03:21:36

+0

這是錯誤的; 'INSERT INTO ... ON DUPLICATE KEY UPDATE id = LAST_INSERT_ID(id)'將返回原始ID,以防萬一密鑰已經存在,即使沒有更新。 – Pere 2015-01-15 08:38:46