0
$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();据我所知,我认为我的语法是正确的,但我仍然遇到错误。有什么帮助吗?

4

2 回答 2

5

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

$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

于 2011-07-11T13:59:09.073 回答
0

使用 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

于 2011-07-11T14:08:05.820 回答