2011-07-02 53 views

回答

61

PreparedStatement上調用​​方法後,插入行的ID將在insert_id屬性中。只讀它。

$pstm->execute(); 
$pstm->insert_id; 
+0

但是它會爲每個返回一個對應的唯一ID執行?在[文檔](http://php.net/manual/en/mysqli-stmt.insert-id.php#102299)下的最熱評論說你應該使用'mysqli_connection-> insert_id'而不是'mysqli_stmt-> insert_id'如果您多次執行相同的準備好的語句。以爲你可能知道這是正確的還是不正確的。 – Cheslab

6
$newid = mysqli_insert_id($mysqli_db); 

$mysqli_db是你的mysqli數據庫連接。據我所知,在哪一行插入行(預備聲明或直接INSERT INTO)無關緊要。 mysqli_insert_id()應該使用這個數據庫連接返回最後插入的行的ID。

另一種方法是製作另一個查詢,如SELECT LAST_INSERT_ID();

+0

值得一提的是,這種方法也適用於交易(不太明顯)。 – Itako

+0

這適用於'PreparedStatement'?我得到了這個id doint:'$ pstm-> execute();'然後,'insert_id'屬性具有id:'$ mysqli-> insert_id;' –

相關問題