2012-08-15 64 views
-7

這是我使用插入值$id,在數據庫中$str$name代碼:我的SQL語法真的錯了嗎?

$r=mysql_query("INSERT INTO varta(id,data,name) VALUES('$id','$str','$name');"); 

,但我得到了上述語句的語法錯誤。這是爲什麼?我的語法真的錯了嗎?

+8

你會得到什麼錯誤? – 2012-08-15 12:51:07

+0

不可能知道沒有變量的值。 – Maerlyn 2012-08-15 12:51:32

+2

*嘆*再次SQL注入。 – 2012-08-15 12:58:59

回答

4

嘗試增加您的查詢詞之間的白色空間,並確保你逃脫輸入

$id = mysql_real_escape_string($id); 
$str = mysql_real_escape_string($str); 
$name = mysql_real_escape_string($name); 

$r=mysql_query("INSERT INTO varta (id,data,name) VALUES ('$id','$str','$name');"); 

或者更好的是 - 看看MySQLiPDO和使用準備好的語句。

1

只要您的輸入變量正確轉義,您的代碼在面值上看起來就OK了。試試這個,所以你可以看到你正在執行語句:

$s = "INSERT INTO varta (id,data,name) VALUES('$id','$str','$name');"; 
echo $s; 
$r = mysql_query($s); 

檢查你的變量不包含撇號,如「菊花奧唐奈」(這將是你已經一個跡象沒有正確逃脫)。

+0

好的,你寫了整個如何開放濫用的事情,我試圖指出他們如何看到錯誤.. – BugFinder 2012-08-15 12:56:29

+0

BugFinder,一旦遺漏被指出,可以回顧性修復!我現在已經完成了這個工作,用+1來分隔查詢,以便能夠回顯。 – halfer 2012-08-15 15:12:05