2010-11-09 182 views
1

我的查詢沒有插入,我沒有收到任何錯誤。想不通爲什麼它不插入mysql查詢插入問題

foreach($_POST as $key => $value) { 
    $clean[$key] = mysql_real_escape_string($value); 
} 

if(isset($_POST['submit'])) { 
$entry = "INSERT INTO test (Word, Type, Lang, Country, Gender, Advice, y_Advice, Notes, 
EditorNotify, Equiv) 
VALUES('".$clean["word_field"]."', 
'".$clean["type_field"]."', 
'".$clean["lang"]."', 
'".$clean["Country"]."', 
'".$clean["gender"]."', 
'".$clean["advice"]."', 
'".$clean["y_advice"]."', 
'".$clean["Notes"]."', 
'".($clean["Notes"] != '' ? '1' : '')."', 
'".$clean["Equiv"]."')"; 
echo mysql_query ($entry); 
mysql_query ($entry); 
+3

執行'echo mysql_error();'查看錯誤 – 2010-11-09 11:59:21

+0

執行查詢後'echo mysql_error();'的輸出是什麼? http://us3.php.net/manual/en/function.mysql-error.php – 2010-11-09 12:00:27

+0

也許你不進入條件,因爲$ _POST ['submit']沒有設置 – 2010-11-09 12:00:50

回答

1

你實際上在做刀片兩次,因爲這樣:

echo mysql_query ($entry); 
mysql_query ($entry); 

echo line will will運行查詢,其後的行也是如此。你需要擺脫這一點。 (雖然我猜你只是把它放在那裏用於測試目的嗎?)

取而代之,我建議只回顯$entry本身,所以你會看到完成的SQL字符串。您可能會立即發現查詢有問題。

如果您不這樣做,請嘗試將該字符串複製粘貼到SQL查詢程序中,以查看實際錯誤是什麼。這將允許你玩這個查詢,直到你做對了。

您也可以使用PHP命令mysql_error()從PHP中獲取錯誤,但是當您有一個奇怪的SQL錯誤時,通常可以更快,更容易地直接使用查詢來玩,而不是在PHP中玩碼。

希望有所幫助。

+0

謝謝,幫助我,回聲美元條目我注意到,兩個領域不正確。 – acctman 2010-11-09 12:55:33

1

嘗試更換:

(Word, Type, Lang, Country, Gender, Advice, y_Advice, Notes, 
EditorNotify, Equiv) 

有了:

(`Word`, `Type`, `Lang`, `Country`,`Gender`, `Advice`, `y_Advice`, `Notes`, 
`EditorNotify`, `Equiv`) 
+3

沒有任何列名在MySQL保留字列表中,所以這應該' t有什麼區別 – 2010-11-09 12:06:38

+1

@馬克雖然總是值得這樣做 – 2010-11-09 12:29:24

1

你不知道你是否得到任何錯誤。首先,擺脫echo mysql_query()。然後運行:

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

如果mysql_query()回報false,這確實發生故障時,無論MySQL錯誤產生現在將顯示在屏幕上查詢。

只是一個小提示:你應該初始化$clean$clean = array();

如果問題是條件不點火,那麼問題可能是在其他地方。你的表格中是否有名爲「提交」的<input>,並且形式爲post

查詢本身對我來說看起來沒問題。我認爲這很難閱讀,所以我會這樣做,但這只是個人風格:

$notify = $clean['Notes'] != '' ? '1' : ''; 
$query = <<<SQL 
    INSERT INTO test 
    (Notes, EditoryNotify) 
    VALUES 
    ($clean[Notes], $notify) 

SQL;