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

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

Patricia Arquette
發布: 2024-11-02 21:07:02
原創
372 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板