2012-04-03 30 views
0

我有一個簡單的INSERT語句看起來像這樣...MySQL的INSERT語句插入一個「0」,而不是變量內容

mysql_query("INSERT INTO comments (`user_id`, `profile_id`, `comment`) VALUES ('{$_SESSION['user_id']}', ('$problemID'), ('$comment'))") or die(mysql_error()); 

一切都被插入細除了$ problemID變量。在MySql表中它只是返回一個0.該表設置爲接收最多11個字符的整數。

變量本身被設置在不同的頁面,但使用這個檢索...

$problemID = intval($_GET["problem"]); 

如果我呼應$ problemID我得到正確的號碼,所以我不能確定,爲什麼它贏得了」只需將此號碼插入我的表格中即可。任何指針都會很棒。

+3

您的投影有''profile_id'',是否與'$ problemID'相同?如果沒有,那麼你可能會試圖插入一個值不存在的列。 – 2012-04-03 13:58:52

+1

爲什麼附上括號? – 2012-04-03 14:02:10

+0

是否有錯誤發生?或者查詢運行正常嗎? – 2012-04-03 14:02:16

回答

0

我的直覺是你的INSERT查詢指的是在您的意見表錯列,因爲你具備以下條件:

INSERT INTO comments (`user_id`, `profile_id`, `comment`) 

但你指的是一個名爲$problemID變量,所以我的猜測是那你的意思是這樣的:

INSERT INTO comments (`user_id`, `problem_id`, `comment`) 

也許你複製和粘貼的查詢代碼,但忘了在投影更改列名?

+2

我不認爲這是問題,否則他將無法將所有行一起插入。 – Churk 2012-04-03 14:03:37

+0

我希望是這樣,但列名實際上是正確的。 – GuerillaRadio 2012-04-03 14:06:02

3

確保您的評論更加清晰;嘗試是這樣的:

mysql_query(sprintf(
    "INSERT INTO 
     comments (`user_id`, `profile_id`, `comment`) 
    VALUES  
     (%s, %s, '%s')", 
    intval($_SESSION['user_id']), 
    intval($problemID), 
    mysql_real_escape_string($comment) 
)) or die(mysql_error()); 

只是要徹底,確保您的表中有一個單獨的主索引(又名條目號)與上漲了自動遞增。這可能是因爲你的MySQL插入工作正常,但是,接收表不知道它應該繼續附加條目。

+0

我試過你的代碼,發生同樣的情況。我確實有一個自動增量選擇「id」列,所以不能這樣做。 – GuerillaRadio 2012-04-03 14:12:45

+0

只是要絕對確定,你可以做一個MySQL輸出只是你插入的表結構,並添加到問題? – pp19dd 2012-04-03 14:24:04

+0

現在修復它是表單操作而不是PHP或MySql的問題。謝謝你的幫助。 – GuerillaRadio 2012-04-03 14:31:02

0

刪除括號並嘗試添加變量,而不是將它們包括在字符串中。

mysql_query("INSERT INTO comments (`user_id`, `profile_id`, `comment`) 
VALUES ('".$_SESSION['user_id']."', ".$problemID.", '".mysql_real_escape_string($comment)."')") or die(mysql_error());