2010-04-03 49 views
0

下面的簡單查詢不起作用。任何想法爲什麼?當我回顯三個變量時,返回正確的值,所以我知道我有變量。查詢不起作用

由於提前,

約翰

$comment = $_POST['comment']; 
$uid = $_POST['uid']; 
$subid = $_POST['submissionid']; 


echo $comment; 
echo $uid; 
echo $subid; 

mysql_connect("mysqlv12", "username", "password") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 


$query = sprintf("INSERT INTO comment VALUES (NULL, '%s', '%s', '%s', NULL, NULL)", $uid, $subid, $comment); 

mysql_query($query); 
+2

mysql_query($ query)或die(mysql_error()); //你的錯誤 – Leo 2010-04-03 03:52:56

+0

告訴我們mysql_error是什麼,我相信有人會得到答案。可能只是你有錯誤的數值或者一個不允許爲空。 – 2010-04-03 04:24:35

+0

如果ID是數字,則將它們視爲%d,並將它們插入而不用「',只是爲了保持良好的實踐 – Ben 2010-04-03 06:09:04

回答

1

查詢看起來很好的表面上。你插入的值是什麼?他們中有沒有人在他們的單引號?我猜想評論欄是這個最可能的罪魁禍首。現在,您的代碼完全容易受到SQL注入的攻擊。此時應更換所有的變量賦值如下,供安全的最低限度:

$comment = $_POST['comment']; 

成爲

$comment = mysql_real_escape_string($_POST['comment']); 

這也將順便採取任何單引號,可能會導致查詢失敗的護理。同時,你需要檢查,如果查詢成功:

mysql_query($query) or die (mysql_error()); 

這會立即告訴你,如果有任何問題(SQL語法錯誤,數據庫服務器去世,連接失敗等)