首頁 >後端開發 >php教程 >如何防止PHP中單引號所造成的MySQL錯誤?

如何防止PHP中單引號所造成的MySQL錯誤?

Patricia Arquette
Patricia Arquette原創
2024-11-02 21:07:02333瀏覽

How to Prevent MySQL Errors Caused by Single Quotes in PHP?

在 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn