PHP / SQL代码不将数据插入数据库,但也没有报告错误

时间:2011-10-31 14:38:06

标签: php sql

我遇到以下代码的问题:

if(mysql_num_rows(mysql_query("SELECT user_id FROM myTable WHERE user_id = '$user_id'"))){

    mysql_query("UPDATE myTable SET
    id='',
    user_id='$user_id',
    title='$title',
    WHERE user_id='$user_id'
    ") 

}  else {

    mysql_query("INSERT INTO myTable (id, user_id, title)
                 VALUES ('', $user_id, $title) ");
}

更新部分似乎可以工作,但在else之后它不会将记录插入表中。

有人能发现可能出现的问题吗?

4 个答案:

答案 0 :(得分:2)

  

我遇到以下代码

的问题
毫不奇怪,因为这段代码太可怕了。四个嵌套的运算符!
即使你收到一些错误信息,你也无法告诉它属于哪个运营商

  

没有报告任何错误

你没有要求任何

使您的代码更加一致并向其添加错误报告:

$sql = "SELECT user_id FROM myTable WHERE user_id = '$user_id'";
$res = mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
if (mysql_num_rows($res)) { 
  $sql = "UPDATE myTable SET id='',user_id='$user_id',title='$title', WHERE user_id='$user_id'";
  mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 
}  else { 
  $sql = "INSERT INTO myTable (id, user_id, title) VALUES ('', $user_id, $title)";
  mysql_query($sql) or trigger_error(mysql_error()." ".$sql); 
}

,您将始终被告知发生的任何错误

答案 1 :(得分:1)

确保在VALUES ()部分中引用您的值:

mysql_query("INSERT INTO myTable (id, user_id, title)
             VALUES ('', '$user_id', '$title') ");

答案 2 :(得分:1)

如果您的ID字段是自动递增整数?如果是这样,那么尝试将其设置为值''将失败。只需将ID从插入查询中删除,它就可以正常工作

答案 3 :(得分:0)

请查看INSERT ... ON DUPLICATE KEY UPDATE,http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html