2014-10-16 73 views
0

我需要使用下面的插入語句,主鍵字段是自動增量。我需要在插入後返回新的主鍵值。最好使用一個語句來執行插入並返回主鍵值。MySQL插入陳述後得到主鍵

$query = $database->connection->prepare("INSERT INTO accounts (created, priviledge, password, token, idle) VALUE ('$created', '1', :password, '$token_encrypt', '$idle')");  
$query->bindParam(":password", $password_hash);  
$query->execute(); 
+2

'$ database-> connection-> lastInsertId()'假設你使用PDO – zerkms 2014-10-16 19:50:55

+0

工程很好,這會返回現有$查詢的值嗎?換句話說,如果腳本的另一個實例正在運行,那麼它是否有機會從另一個實例返回不正確的值? – 2014-10-16 19:55:04

+0

沒有。 lastinsertid僅適用於** YOUR **腳本,並且**僅適用於該特定的數據庫連接。其他用戶並行運行此代碼或其他代碼不會影響您的ID,除了可能使用其他ID以便此腳本的ID序列可能不是順序的。 – 2014-10-16 19:56:30

回答

2

爲你使用PDO,你需要使用

$database->connection->lastInsertId() 

而且它保證你要返回當前會話的值。所以從評論中回答你的問題 - 你不可能從併發會話中獲得錯誤的值。

0

使用mysql_insert_id();可以獲取上次查詢中生成的ID。

它通過上一個查詢(通常是INSERT)檢索爲AUTO_INCREMENT列生成的ID。

0

假設你的主要字段名ID那就試試這個代碼

SELECT max(id) FROM tableName 

或一旦嘗試這種

LAST_INSERT_ID(); 
0
DELIMITER $$ 
DROP TRIGGER IF EXISTS `TR_AI_mytable`; 
CREATE TRIGGER `TR_AI_mytable` AFTER INSERT 
    ON `mytable` FOR EACH ROW 
BEGIN 
    SET @mylastPK = new.PKField; 
END; 
$$