不能将带有单引号的字符串插入MySQL数据库

时间:2013-09-15 12:03:21

标签: php quote

我试图将一个字符串“你最喜欢的叔叔的名字插入一个mysql数据库并收到错误消息:

  

提交请求时出错您的SQL语法错误;查看与您的MySQL服务器版本相对应的手册,以便在“您最喜欢的名字”附近使用正确的语法?,mobile_no ='+ 4479094484999',country'在第4行*“

我的代码是:

 $sec_ques2 = mysql_real_escape_string($sec_ques);
 $insert = "INSERT INTO customers SET 
 acc_status = 'Inactive',
 acc_type = '{$acc_type}',
 sec_question = '{$sec_ques2}',
 mobile_no = '{$m_number}',
 country =    '{$country}',
 passkey = '{$passkey}',
 sec_ans= '{$answer}',
 home_address= '{$h_address}',
 gender = '{$gender}',
 first_name = '{$f_name}',
 last_name= '{$l_name}',
 emp_status = '{$emp_status}',
 marital_status = '{$m_status}',
 email_address = '{$email}'";

1 个答案:

答案 0 :(得分:2)

好吧,问题可能是你在INSERT查询中使用UPDATE(基本上应该工作)语法。

另外,mysql_real_escape_string()函数的输出仍然是一个字符串,所以它仍然应该被2个单引号包围。

为什么你不尝试这样的事情:

$sec_ques = mysql_real_escape_string($sec_ques);
$insert = "INSERT INTO accounts(field1, filed2, field3) 
VALUES('{$status}', '{$acc_type}', '{$sec_ques}')";

如果这也不起作用,也许您应该迁移到使用PDO,更加安全和舒适。