2012-04-03 22 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());