用于更新或插入值的Php代码


Php code to update or insert values

我正在尝试用php编写一个API,它将检查用户输入的值,如果trackid和userid已经在数据库中,它将更新评级。但是,如果音轨和用户id不存在,那么API应该将它们与评级一起插入。这是怎么做到的。请注意,我一直收到错误:

调用非对象上的成员函数rowCount()

在第14行。任何帮助都将不胜感激。

<?php
$id = $_GET['TrackId'];
$user = $_GET['UserId'];
$rating = $_GET['Rating'];
include("connect.php");
$query = "UPDATE `rating` SET `rating` = '$rating' WHERE track_id = '$id' AND user_id = '$user' AND rating_set=NOW()";
$sth = $dbc->query($query);
$rows = $sth->rowCount(); 
if ($rows != 2) {
$query = "INSERT INTO `rating` values ('$id','$rating','$user',NOW())";
$results = $dbc->query($query); 
$rows = $results->rowCount(); 
header('Content-type: application/json; charset=utf-8');
echo $_GET['onJSONPLoad'];
echo "(" . json_encode($rows) . ")";
 }
 else 
 {
header('Content-type: application/json; charset=utf-8');
echo $_GET['onJSONPLoad'];
echo "(" . json_encode($rows) . ")";
 }  
 $dbc = null;
 ?>

错误是因为$results为null/false,这可能是由于SQL执行失败。

假设您的$dbc->query($sql)是mysqli_query()的包装器,则函数将在查询失败时返回false。要调试此行为,可以使用var_dump($results)

在更新查询中,我要查找的条件的一部分是NOW(),它永远找不到。所以我把它移到了查询的更新部分,而不是条件区域。

使用ON DUPLICATE KEY子句

INSERT INTO table (column1, ... ) 
    VALUES (’value1’, ...) 
    ON DUPLICATE KEY
      UPDATE column2 = =value2, ...

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