簡體   English   中英

運行插入查詢時的Mysql錯誤問題

[英]Mysql Error Issue When Insert Query Is Run

我有一個HTML表單。 提交表單后,將顯示以下錯誤消息:

錯誤信息:

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 'm ok. ', 'point of interest', 
'91354857', '6546564654', '2 Person', '25', 'engl' at line 1 

MySQL查詢:

$insert = mysql_query("INSERT INTO host_signup VALUES('', '$uname', '$f_name', 
'$pr_lname', '$email', '$hashpass', '$title', '$country', '$city', '$state', 
'$postalcode', '$address', '$final_neighbor', '$landline', '$mobileph', '$capacity', 
'$age', '$language', '$final_interest', '$news', '$ip', '$dof', '0' )");

實際上,當我將stripslashes()放入變量中時,它會顯示錯誤消息,但沒有stripslashes()它將顯示反斜杠。

例如:

$address = $_POST['address'];       
$address = stripslashes($address);

您需要先對SQL值進行轉義,然后再將它們放入查詢中。 看起來您的字符串之一有一個'和mysql削減了嗎? 我猜'm ok. ' 'm ok. '是“我很好”的結尾。

該字符串應該沒問題i\\'m ok.

您需要使用addslashes

addslashes —帶斜杠的引用字符串

Official Document

<?php
  $str = "Is your name O'reilly?";
  // Outputs: Is your name O\'reilly?
  echo addslashes($str);
?>

您應該使用mysql_real_escape_string() - 而不是別人建議的addslashes()

addslashes()文檔對此表示贊同:

強烈建議使用特定於DBMS的轉義函數(例如,對於MySQL使用mysqli_real_escape_string()或對於PostgreSQL使用pg_escape_string()),但是如果您使用的DBMS沒有轉義功能,並且DBMS使用\\來轉義特殊字符,則您可以使用此功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM