2015-03-18 179 views
2

我嘗試在執行sqlstatement後獲取最後插入的auto_incremented ID。我正在使用苗條框架來做到這一點。這裏是我的代碼:獲取最後插入的auto_incrementID使用PHP的MySQL

$this->conn = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME); 

... 

$sql_stmt= "INSERT DELAYED INTO Tab(Id, Value1, Value2, Value3) VALUES (DEFAULT,?,?,?)"; 

$stmt= $this->conn->prepare($sql_stmt); 
$stmt->bind_param("sss", $param1, $param2, $param3); 
$stmt->execute(); 

這是我嘗試返回增加後的值:

return mysqli_insert_id($this->conn); 
return $this->conn->mysqli_insert_id(); 
return $this->conn->insert_id; 

但是,這並不工作...

有誰知道怎麼弄的值?

感謝您的幫助!

回答

2

您使用的是INSERT DELAYED,因此您調用該代碼時可能未插入它。

當客戶端使用INSERT DELAYED,它在 從服務器獲取一個不錯的一次,該行正在排隊等待插入時表不被其他線程 使用。

更具體

因爲INSERT語句延遲立即返回,被插入 行之前,您不能使用LAST_INSERT_ID()來獲取 AUTO_INCREMENT值的語句可能會產生。從

http://dev.mysql.com/doc/refman/5.5/en/insert-delayed.html

所以不要使用延遲,如果你想要得到的ID。

+0

很棒!感謝幫助!現在它工作了! – Sheldon 2015-03-18 22:53:14

相關問題