2010-05-19 99 views

回答

1

我不能肯定失败的原因,但不是写它与MySQL变量,为什么不使用PHP变量?

换句话说,

$fname = 'point1'; 
$query = "select * from country where name = '$fname'"; 

和针对SQL注入的正常警告适用,当然。

+0

还可以使用准备好的语句来完全杀死SQL注入 – 2010-05-19 15:57:54

+0

是的,我同意。我试图保持简单。 – MJB 2010-05-19 16:17:49

2

如果不使用特殊功能,则无法通过PHP的mysql库运行多个语句。但是你的SQL变量应该通过你的连接持久化,所以不要连接字符串并运行一次,而是分别执行每个语句。

+0

我不知道他们会坚持。在Oracle中,他们死亡(AFAIK) – MJB 2010-05-19 15:50:15

+0

特殊函数含义的代码,用于解析和分离您的语句并为您单独运行查询。 – webbiedave 2010-05-19 15:52:28

+0

有mysqli_multi_query函数,但我不推荐它。 – 2010-05-19 15:56:17

1

PHP的mysql驱动程序不允许将多个查询作为安全措施从单个查询函数调用中执行。这是针对最严重的SQL注入攻击的部分缓解,使经典的XKCD Bobby Tables攻击无效。

这并不是说它使注入攻击变得不可能 - 它只是使得多查询版本的攻击变得不可能。