在php中的一个语句中运行多个mysql查询的最佳方法

时间:2017-11-23 07:35:13

标签: php mysql

在PHP中的一个语句中运行多个mysql查询的最佳方法是什么?

目前使用preg_split使用分号(;)拆分查询并运行多个查询。但据我所知,这种方法容易被注射。

在mysqli中有可能吗?怎么样?

感谢。

1 个答案:

答案 0 :(得分:1)

要使用mysqli运行多个查询,请使用

因为在这种情况下查询是一个字符串(而不是语句),所以你不能使用参数绑定,所以你需要确保queries are properly escaped

另请参阅此页面专用于Multiple Statements with mysqli

  

API函数mysqli_query()mysqli_real_query()未设置激活服务器中多个查询所需的连接标志。额外的API调用用于多个语句,以减少意外SQL注入攻击的可能性。攻击者可能会尝试添加; DROP DATABASE mysql; SELECT SLEEP(999)等语句。如果攻击者成功将SQL添加到语句字符串但未使用mysqli_multi_query,则服务器将不会执行第二个注入的恶意SQL语句。

再往下一页:

  

不支持在预准备语句中使用multiple语句。

所以是的,你需要确保任何用户提供的多个查询的部分都不是恶意的,在这种情况下,使用单个查询可能更简单。