如何转义 php mysqli 查询? [复制]
Posted
技术标签:
【中文标题】如何转义 php mysqli 查询? [复制]【英文标题】:How to escape php mysqli query? [duplicate] 【发布时间】:2016-01-19 09:23:00 【问题描述】:我正在将数据从 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
是正确的方法。
有什么建议吗?
【问题讨论】:
我建议您使用PDO 在 PHP 中访问数据库。如果你不会,你可以使用mysql_escape_string 使用准备好的语句 - mysqli 和 PDO 都支持它们,一旦你掌握了它们,它会让生活变得更加轻松 我不认为我可以使用参数。由于行数和列数是动态的。我只使用 mysqli_query 【参考方案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()
中。
【讨论】:
以上是关于如何转义 php mysqli 查询? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
mysqli_real_escape_string 如何无法阻止 SQL 注入? [复制]