2012-10-26 30 views
1

我需要使用MySQL的SELECT LAST_INSERT_ID()函數來獲得最後插入的行的ID運行兩個MySQL查詢。 當我嘗試運行此: -在PHP的mysql_query時間()

mysql_query(" 
    INSERT INTO `posts` 
      (`user`, `body`, `time`, `pageID`) 
      VALUES('pachykutty', 'testMessage', '2012-10-26 04:59:43', 1); 
    SELECT LAST_INSERT_ID();"); 

給我錯誤。但是當我運行這兩個查詢單獨這樣的: -

mysql_query(" 
INSERT INTO `posts` 
     (`user`, `body`, `time`, `pageID`) 
     VALUES('pachykutty', 'testMessage', '2012-10-26 04:59:43', 1)"); 
mysql_query("SELECT LAST_INSERT_ID()"); 

這是可以的。我擔心,如果兩個客戶端同時運行查詢,他們的LAST_INSERT_ID將發生衝突。所以我想毫不拖延地一起運行這兩個查詢。有什麼方法嗎?

+0

LAST_INSERT_ID每個連接維持。 – Eelke

+0

可能重複:http://stackoverflow.com/questions/6821184/how-do-you-do-multiple-sql-statments-in-one-mysql-query – WebChemist

回答

3

您可以使用查詢像

mysql_query(" 
INSERT INTO `posts` 
     (`user`, `body`, `time`, `pageID`) 
     VALUES('pachykutty', 'testMessage', '2012-10-26 04:59:43', 1)"); 
$var = mysql_insert_id(); 

mysql_insert_id作用在最後進行查詢。

所以不必擔心和使用上面的代碼。

+0

非常感謝您的信息。但有一個疑問。我有actions.php –

+1

非常感謝您的信息。但有一個疑問。我在actions.php中包含scripts.php。 Scripts.php包含像insertPost($ user,$ body,$ page)這樣的函數;這將自動進行數據驗證。所有發佈的數據都發送到actions.php並調用insertPost函數。如果我在actions.php中調用mysql_insert_id() - 既不在insertPost()函數中,也不在scripts.php中 - 我仍可以獲得正確的值,與其他用戶沒有衝突嗎? –