如何逃脱php mysqli查询?

时间:2015-10-20 16:00:18

标签: php mysqli

我将数据从AJAX传递给我的PHP。我只是运行for循环来进行查询。我的数据有问题,它包含单引号。

我使用单引号将我的参数括在查询中。查询类似于

   INSERT INTO myTable (column1.column2) VALUES('value1', 'value2'), 
   ('value'1', 'value2');

我想像

一样逃脱
   INSERT INTO myTable (column1.column2) VALUES('value1', 'value2'), 
   ('value\'1', 'value2');

我刚试过mysqli_real_Escape_String。它返回类似

的内容
   INSERT INTO myTable (column1.column2) VALUES(\'value1\', \'value2\'), 
   (\'value\'1\', \'value2\');

因此查询执行失败。

我不认为使用htmlspeciachars是正确的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

你绝对应该使用准备好的陈述。他们并不那么棘手。

但是,如果您不打算跳转,那么您只需要正确使用mysqli_real_escape_string

从你得到的结果来看,我猜你在mysqli_real_escape_string函数中包装了整个查询。但是你应该将值包装在其中。

"INSERT INTO myTable (column1, column2) VALUES('value1', 'value2'), 
   ('" . mysql_real_escape_string("value'1") . "', 'value2')";

这是一种非常人为的做事方式。但这个想法是:只将值包装在mysqli_real_escape_string()