使用撇號插入資料時出現MySQL 語法錯誤
當嘗試使用INSERT 查詢將資料插入MySQL 資料庫時,您可能會遇到如果資料包含撇號(單引號),則會出錯。此錯誤通常表現為與引用資料相關的語法問題。
錯誤訊息:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's','Corn Flakes 170g','$ 15.90','$ 15.90','$ 14.10','--')' at line 1MySQL Update Error:
說明:
在MySQL 中,撇號用作字串值的分隔符號。當撇號出現在字串中時,必須使用反斜線 () 對其進行轉義,以將其與分隔符號區分開來。這可確保 MySQL 解析器理解撇號是字串的一部分,而不是分隔符號。
解決方案:
要解決此問題,請轉義字符串中的所有撇號您嘗試通過在每個撇號前添加反斜杠字符來插入的數據。例如,您可以插入“Kellogg's”,而不是插入字串“Kellogg's”。透過轉義撇號,您指示 MySQL 將其視為字串值的一部分,而不是分隔符號。
其他解決方案(使用mysql_real_escape_string):
如果您使用PHP 連接到MySQL 時,您可以使用mysql_real_escape_string() 函數在將資料插入資料庫之前自動轉義資料中的任何特殊字符,包括撇號。此功能可確保您的資料正確格式化以進行插入並防止 SQL 注入攻擊。這是使用 mysql_real_escape_string() 的範例函數:
<code class="php">function insert($database, $table, $data_array) { // ... (Rest of the code omitted for brevity) // Escape apostrophes in data values foreach ($data_array as $key => $value) { $tmp_dat[] = "'".mysql_real_escape_string($value)."'"; } // ... (Rest of the code omitted for brevity) }</code>
以上是如何克服插入資料中撇號導致的MySQL語法錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!