$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