2010-06-26 64 views
2

我收到以下錯誤消息時我嘗試此查詢:查詢不起作用

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())"; 

你有一個錯誤的SQL語法。檢查對應於你的MySQL服務器版本正確的語法近

(18, , 'Y', NOW())' at line 1 

使用的一切在我的代碼工作,除了這條線的手冊。我知道它與$ _POST數組變量有關,但我不知道正確的語法。

如果您需要更多代碼,我很樂意將其包含在內。

+0

你能發佈一些更多的代碼嗎?什麼是完整的'$ query'? – phimuemue 2010-06-26 16:07:47

回答

3

您使用單引號的周圍$i是錯誤的:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())"; 

這將導致$我採取字面代替的價值$ i正在使用(這是我認爲你需要的)。

這應該工作:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())"; 
+0

正是我需要的。除了那個之外,我嘗試了幾乎所有單引號和括號的變量。謝謝。 – aliov 2010-06-26 23:33:51

2

如果您想要更好的幫助,請顯示發送帖子變量的代碼(可能是表單或AJAX請求)。

但你的問題可能在於這裏:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

該職位評估爲類似$_POST['type']['1']。你可能想要$_POST['type'][1]

那麼試試這個:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

0

如前所述。

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())"; 

應改爲

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())"; 

好奇,爲什麼你在使用 「{}」。也就是說,您應該避免直接在$ _GET或$ _POST中輸入變量,將其用於查詢或您網站的任何其他方面。

你真的應該養成習慣或通過你已經預先確定的東西傳遞變量。

更不用說,你會在運行sql查詢之前逃避這些變量。

看看

http://php.net/mysql_real_escape_string http://php.net/pdo.quote

如果你有時間,調查PDO。