2011-01-09 56 views
1

我的網站有PHP命令:爲什麼我的查詢不起作用?

mysql_query("SELECT * FROM users WHERE id=" . $_GET["id"]) or die(mysql_error()); 

當我輸入URL

http://example.com/index.php?id=1;%20UPDATE%20users%20SET%20password=123%20WHERE%20id=1 

我獲得以下錯誤:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE users SET password=abc WHERE id=1' at line 1

但phpmyamin查詢成功執行。這裏有什麼問題?爲什麼它不在瀏覽器中執行?

+8

呃,你想SQL注入你自己的查詢?這是非常不安全的。 – Yahel 2011-01-09 00:37:59

回答

4

mysql_query()不支持在單個調用多個查詢(您正試圖注入):

SELECT * FROM users WHERE id=1; 
UPDATE users SET password=abc WHERE id=1 

因此,「語法錯誤」 。

現在去保護該查詢。

7

mysql_query()發送一個唯一的查詢(多個查詢不支持)」

如果你打算允許MySQL的注射那樣,將請求mysql_query不喜歡它。如果你不是,mysql_real_escape_string($_GET["id"]);防止「注入」