在 PHP 中轉義 MySQL 插入的單引號
將資料插入 MySQL 資料庫通常涉及處理包含特殊字元的字串。處理單引號可能特別棘手。
問題
描述了一個場景,其中使用兩個 SQL 語句插入和處理表單中的資料。第一條語句用於將資料插入資料庫,沒有出現任何問題。然而,當名稱包含單引號(例如「O'Brien」)時,會擷取資料並觸發電子郵件的第二個語句失敗,並出現 MySQL 錯誤。
解決方案
解決方案在於轉義插入資料庫的字串。 PHP 為此提供了 mysql_real_escape_string() 函數。它將單引號等字符替換為其轉義的等效字符,從而防止錯誤和資料損壞。
為什麼會有不同的行為?
兩個語句之間行為不同的原因可能是由於使用了 magic_quotes_gpc。此 PHP 設定自動轉義從 $_GET、$_POST 和 $_COOKIES 收集的字串。在第一個語句中,直接從表單中捕獲數據,並應用了這種自動轉義。
但是,當在第二個語句中檢索並插入資料時,它不再轉義。結果,名稱中的單引號導致了 MySQL 錯誤。透過使用 mysql_real_escape_string(),兩個字串都可以正確轉義,確保正確處理特殊字元並保持資料完整性。
以上是如何使用 PHP 安全地將帶有單引號的字串插入 MySQL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!