MySQL数行错误


$result = mysql_query("SELECT FROM table WHERE job_id = '$key'") or die("Error: ". mysql_error(). " with query ". $query);
    $num_rows = mysql_num_rows($result);
    if($num_rows > 0) {
        mysql_query("UPDATE table SET row = '$value' WHERE job_id = '$key'");
        }else{
        mysql_query("INSERT INTO table SET row = '$value', job_id = '$key'");
        }

我需要检查数据库是否有现有记录,如果没有,我想创建一个。每次我运行这个,我得到:

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in my/web/directory/index.php on line 147

我看过这个网站上现有的帖子,但大多数都涉及到用户的语法错误。比如忘记mysql_query();据我所知,我认为我的语法是正确的,但我仍然得到一个错误。任何帮助吗?

第一个查询不正确。
你的插入也不正确。
试试这个:

$result = mysql_query("SELECT * FROM table WHERE job_id = '$key'") or die("Error: ". mysql_error(). " with query ". $query);
    $num_rows = mysql_num_rows($result);
    if($num_rows > 0) {
        mysql_query("UPDATE table SET row = '$value' WHERE job_id = '$key'");
        }else{
        mysql_query("INSERT INTO table VALUES ('$value', '$key')");
        }

也可以使用INSERT…ON DUPLICATE KEY UPDATE.

MySql有一个语法,如果一个行还不存在就创建它,如果它已经存在就更新它。在您的情况下,您可以这样做:

$result = mysql_query("INSERT INTO table (job_id, row) 
   VALUES ('$key', '$value')  ON DUPLICATE KEY UPDATE row='$value';

这通常是可取的,因为您对数据库执行的查询数量减少了一半,并且没有几个线程在竞争条件下意外地多次添加行的风险。

你可以阅读更多:

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

相关内容

  • 没有找到相关文章

最新更新