插入查询运行时出现Mysql错误问题

时间:2013-03-30 03:54:40

标签: php mysql

我有一个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);

3 个答案:

答案 0 :(得分:1)

在将sql值放入查询之前,您需要转义它们。看起来你的一个字符串有'和mysql剪切了吗?我猜测'm ok. '是“我没问题”的结束。

该字符串应为i\'m ok.

答案 1 :(得分:0)

您需要使用addslashes

  

addslashes - 使用斜杠引用字符串

Official Document

示例

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

答案 2 :(得分:0)

您应该按照其他人的建议使用mysql_real_escape_string() - addslashes()

addslashes() documentation同意:

  

强烈建议使用DBMS特定的转义函数(例如MySQL的mysqli_real_escape_string()或PostgreSQL的pg_escape_string()),但是如果您使用的DBMS没有转义函数且DBMS使用\来转义特殊的字符,你可以使用这个功能。