您可以通過禁用 mysqli 錯誤報告來做到這一點,但任何常規(guī)項目都不應(yīng)該這樣做。事實上,看來您正在以錯誤的方式解決這個問題!您不應(yīng)該想要禁用錯誤報告,您應(yīng)該修復(fù)錯誤!
正如您所提到的,如果錯誤來自錯誤構(gòu)建的動態(tài) SQL 語句,那么您的代碼不應(yīng)包含任何邏輯來處理這種可能的情況,因為您不想讓錯誤成為設(shè)計的一部分。就像任何其他錯誤一樣,這是 PHP 代碼中的一個錯誤。它本身表現(xiàn)為 MySQL 錯誤這一事實是無關(guān)緊要的。您必須修復(fù)構(gòu)建無效 SQL 語句的代碼! 沉默錯誤無助于修復(fù)錯誤!
假設(shè)您的 PHP 代碼從常量 SQL 部分構(gòu)建 SQL(如果它使用變量,那么您的代碼中就會出現(xiàn)更大的問題),那么您的任務(wù)是確定哪個代碼路徑導(dǎo)致 SQL 關(guān)鍵字的不正確組合。您可以從 SQL 錯誤中部分推斷出這一點。異常消息將告訴您語法錯誤是什么。如果 MySQL 錯誤與損壞的語法無關(guān),則過程仍然類似:找到導(dǎo)致錯誤的原因并修復(fù)它。
不要在 SQL 代碼周圍編寫特殊的錯誤處理邏輯。這很混亂,而且絕對沒有必要。