我覺得有兩種方法。首先,如果有可能無法插入或更新,我會首先檢查表格的狀況,看看是否可能。如果您需要進行原子操作,則可以在此過程中鎖定表,以確保其他進程不會在檢查表和執行更新之間更改表。如果你需要高水平的併發性,這可能會減慢速度。或者,如果您使用事務引擎(InnoDB具有事務處理能力,MyISAM沒有),您可以啓動一個事務,然後監視更新和插入的返回值。
START TRANSACTION
..然後檢查您的操作結果。從PHP文檔:
對於SELECT,SHOW,描述,解釋等語句返回的結果集 ,請求mysql_query()成功返回的資源,或 錯誤FALSE。
對於其他類型的SQL語句,INSERT,UPDATE,DELETE,DROP等, mysql_query()在成功時返回TRUE或在錯誤時返回FALSE。
返回的結果資源應該傳遞給mysql_fetch_array(), 和其他函數來處理結果表,來訪問 返回的數據。
使用mysql_num_rows()來找出有多少行被返回的 SELECT語句或mysql_affected_rows()函數來找出有多少行 受到影響由DELETE,INSERT,REPLACE或UPDATE語句。
如果不能成功,你可以回滾所做的更改:
ROLLBACK
最後,不知道更多關於你的應用程序,我不能肯定,但你可以設計數據集和應用程序,這樣你就不會在這種情況下更快地出現這種情況。事務和鎖定表都很慢,所以我會避免它們,除非有必要。
顯示您目前擁有的代碼..以獲得最佳建議。 – BugFinder
在感謝信息中停止編輯。我刪除它的原因。 – PeeHaa