我将数据从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
是正确的方法。
有什么建议吗?
答案 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()
。