2012-04-18 72 views
0

下面是一些示例DB代碼:在PHP 5中使用mysql_query()進行異步調用嗎?

mysql_query("DELETE FROM table1 WHERE info1 = 'blah'"); 
mysql_query($personal_query); 

從理論上講,可能之前的第一行已經完成了刪除第二行得到執行?如果是這樣,我該如何讓代碼不是異步的?我需要確保DELETE在繼續之前完成。只是得到一個返回值解決這個問題?

$result = mysql_query("DELETE FROM table1 WHERE info1 = 'blah'"); 
mysql_query($personal_query); 

謝謝。

+0

其他回答都是正確的。它是連續的。 但是你可以(通常應該)在繼續腳本之前檢查mysql的響應。 我猜你沒有這樣做,否則順序問題將是沒有意義的。 – HappyTimeGopher 2012-04-18 22:29:47

+0

聽起來像在兩者周圍封裝事務將解決併發訪問的任何問題。 – halfer 2012-04-19 21:29:07

回答

2

你所尋找的是鎖定任何行或整個表的方式。這應該有所幫助:http://dev.mysql.com/doc/refman/5.5/en/locking-issues.html

您必須記住,當兩個或多個用戶在同一個表/行上工作時,通常會應用所謂的「競爭條件」。

P.S.你不應該使用古代的mysql_*函數來編寫任何新的代碼。他們不再被維護,社區已經開始處理deprecating them。相反,您應該傾向於如何使用PDOMySQLiprepared statements。如果你決定去PDO,那麼這是一個很好的tutorial

0

不是,當然不是,它會按順序運行,它不會移動,直到功能完成並返回