在 MySQL 的 PHP 中轉義單引號
您遇到了將資料插入時單引號導致 MySQL 錯誤的問題一個資料庫。當資料在插入之前未正確轉義時,就會出現此問題。
在第一個查詢中,不需要轉義,因為您是直接從表單插入資料。但是,第二個查詢從先前插入的記錄中檢索資料並嘗試將其插入新表中。由於資料可能包含未轉義的單引號,因此會觸發 MySQL 錯誤。
為了防止此錯誤,您可以使用 mysql_real_escape_string() 函數在將所有字串插入資料庫之前對它們進行轉義。此函數將單引號等特殊字符轉換為其轉義的等效字符,防止它們導致錯誤。
例如,在查詢2 中,將以下行替換:
<code class="php">$query = mysql_query("INSERT INTO message_log (order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status) VALUES ('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', '$row->supplier_id', '$row->primary_email' ,'$row->secondary_email', '$subject', '$message_content', '1')");</code>
替換為:
<code class="php">$query = mysql_query("INSERT INTO message_log (order_id, timestamp, message_type, email_from, supplier_id, primary_contact, secondary_contact, subject, message_content, status) VALUES ('$order_id', '".mysql_real_escape_string(date('Y-m-d H:i:s', time()))."', '".mysql_real_escape_string($email)."', '".mysql_real_escape_string($from)."', '$row->supplier_id', '".mysql_real_escape_string($row->primary_email)."', '".mysql_real_escape_string($row->secondary_email)."', '".mysql_real_escape_string($subject)."', '".mysql_real_escape_string($message_content)."', '1')");</code>
透過這種方式對所有字串進行轉義,可以防止單引號導致MySQL錯誤,確保資料插入正確。
以上是如何防止PHP中單引號所造成的MySQL錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!