因此,我可以在mysql内部成功运行以下语句。
SET @fname = 'point1';
SELECT * FROM country WHERE name=@fname;`但是当我试图像这样通过php传递查询并运行它时,我在第二行得到了一个错误
$query = "SET @fname = 'point1';";
$query .= "SELECT * FROM country WHERE name=@fname;";发布于 2010-05-19 23:48:51
我不确定为什么它会失败,但与其用MySQL变量编写,为什么不使用PHP变量呢?
换句话说,
$fname = 'point1';
$query = "select * from country where name = '$fname'";当然,通常的SQL注入警告也适用。
发布于 2010-05-19 23:49:22
在不使用特殊函数的情况下,不能通过PHP的mysql库运行多个语句。但是您的SQL变量应该在您的连接中保持不变,所以不是连接字符串然后运行一次,而是单独执行每条语句。
发布于 2010-05-20 01:58:18
作为一种安全措施,PHP的mysql驱动程序不允许从单个查询函数调用执行多个查询。这是对最糟糕的SQL注入攻击的部分缓解,使得经典的XKCD Bobby Tables攻击无效。
这并不是说它使注入攻击变得不可能--它只是使多查询版本的攻击变得不可能。
https://stackoverflow.com/questions/2867094
复制相似问题