我有一个简单的调查页面,我试图做。除了在我对调查页面的评论中使用单引号时,一切运行良好。当我对它的单引号发表评论时,数据库查询不会插入到数据库中。MYSQL转义字符串执行
在Googleing之后,我想我必须在将字符串插入到数据库之前将其转义。在插入数据库之前,我使用mysqli_real_escape_string来转义字符串,但这似乎没有帮助。
这里是我的代码,将用户的意见为DB(未显示安全$ CON)
mysqli_real_escape_string($con,$_POST['question_1']);
mysqli_real_escape_string($con,$_POST['question_2']);
mysqli_real_escape_string($con,$_POST['question_3']);
mysqli_real_escape_string($con,$_POST['question_4']);
mysqli_real_escape_string($con,$_POST['question_5']);
mysqli_query($con, "INSERT INTO feedback (question_1, question_2, question_3, question_4, question_5) VALUES ('$_POST[question_1]', '$_POST[question_2]', '$_POST[question_3]', '$_POST[question_4]', '$_POST[question_5]')");
同样,当注释包含一个单引号这只是发生。有什么建议么?我是否错误地脱离了字符串?
处理的变量分配给它第一'$ Q1 = mysqli_real_escape_string($ CON,$ _ POST [ 'question_1']);'然后执行'VALUES(' “$ Q1。” ')'等等,因为你现在在做的是'VALUES'('$ _POST [question_1]','是没有意义的,你也可以使用'stripslashes()',或者使用[prepared statements](http: /www.php.net/manual/en/mysqli.quickstart.prepared-statements.php)并完成它,不需要使用附加函数 – 2015-03-19 03:08:27
我会避免使用'stripslashes()',因为它往往会遗漏一些情况下,事情不是SQL安全的。我从来没有逃脱函数无法返回SQL安全(不要与安全性安全混淆)字符串 – Machavity 2015-03-19 03:30:54
@Machavity条带允许有O'Malley写入数据库确切如图所示,而不是奥马利。 – 2015-03-19 03:32:16