MySql INSERT语句插入'0'而不是可变内容

时间:2012-04-03 13:56:03

标签: php mysql

我有一个简单的INSERT语句,看起来像这样......

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 个答案:

答案 0 :(得分: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() );

为了彻底,请确保您的表格有一个单独的主要索引(也就是条目ID),并加上自动增量。可能是你的MySQL插件工作正常,但是,接收表不知道它应该继续附加条目。

答案 1 :(得分:0)

我的预感是您的INSERT查询引用了评论表中的错误列,因为您有以下内容:

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

但你指的是一个名为$problemID的变量,所以我猜你的意思是这样的:

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

也许您复制并粘贴了查询代码,但忘记更改投影中的列名?

答案 2 :(得分: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());