2010-05-19 102 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攻擊無效。

這並不是說它使注入攻擊變得不可能 - 它只是使得多查詢版本的攻擊變得不可能。