在PHP 中轉義單引號以進行MySQL 插入
使用PHP 將資料插入MySQL 資料庫時,轉義任何單引號重要(') 位於資料中以防止意外行為。在 MySQL 語句中使用單引號並在第二次插入嘗試中遇到錯誤時,會出現一個常見問題。
查詢1
第一個查詢,它從表單寫入job_log 表中,可以正常工作,因為booking_name 欄位中的單引號未明確轉義。但是,這不是推薦的做法。
$result = mysql_query("INSERT INTO job_log (order_id, ...) VALUES ('$order_id', '$supplier_id', ..., '$booking_name', '$address', ...)");
查詢2
第二個查詢(將資料庫中的資料插入message_log 表中)在下列情況下失敗: Primary_contact 欄位包含單引號。這是因為 row->primary_email 字串中的單引號會觸發 MySQL 語法錯誤。
$query = mysql_query("INSERT INTO message_log (order_id, ...) VALUES ('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', ..., '$row->primary_email' ,..., '$message_content', '1')");
使用mysql_real_escape_string 的轉義解決方案
要解決此問題,正確轉義插入資料庫的字串值中的任何單引號至關重要。這可以使用 mysql_real_escape_string() 函數來實現,該函數會對字串進行轉義以符合 MySQL 語法。
$esc_primary_email = mysql_real_escape_string($row->primary_email); $query = mysql_query("INSERT INTO message_log (order_id, ...) VALUES ('$order_id', '".date('Y-m-d H:i:s', time())."', '$email', '$from', ..., '$esc_primary_email' ,..., '$message_content', '1')");
透過使用 mysql_real_escape_string() 轉義單引號,查詢將成功執行而不會遇到錯誤,從而確保將資料正確插入資料庫。
以上是如何使用 PHP 安全地將單引號插入 MySQL 資料庫?的詳細內容。更多資訊請關注PHP中文網其他相關文章!