Php Can';t更新然后在SQL中插入
我试图编写PHP代码来更新一个存在的值,如果它不存在,则插入它。此函数的一部分工作,即插入部分,但更新似乎不起作用。我的代码如下:Php Can';t更新然后在SQL中插入,php,sql,Php,Sql,我试图编写PHP代码来更新一个存在的值,如果它不存在,则插入它。此函数的一部分工作,即插入部分,但更新似乎不起作用。我的代码如下: <?php $id = $_GET['Track']; $user = $_GET['User']; $rating = $_GET['Rating']; include("connect.php"); $query = "UPDATE `rating` SET `rating` = '$rating' WHERE track_id = '$id' AND u
<?php
$id = $_GET['Track'];
$user = $_GET['User'];
$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 == 0) {
$query = "INSERT INTO rating values ('$id','$rating','$user',NOW())";
$results = $dbc->query($query);
$rows = $results->rowCount();
}
/* output in necessary format */
header('Content-type: application/json; charset=utf-8');
echo $_GET['onJSONPLoad'];
echo "(" . json_encode($rows) . ")";
$dbc = null;
?>
您的更新查询无法工作
您仅在评级设置
正好是NOW()的情况下更新数据。
。这很可能不适合任何数据记录。您可能只想使用日期部分。您在更新查询中使用的是NOW(),它给出了当前时间。这将永远不会是一样的!!!尝试从更新查询中删除“..”和rating_set=NOW()。insert replae/insert。。。在重复密钥更新时,什么数据类型具有rating\u set
?rating\u set
很可能是这里的错误,因为您试图按当前时间匹配它,我非常确定插入的时间与当前时间不同,因此您从未获得匹配。是否尝试执行此操作:$query=“更新rating set rating='$rating',rating\u set=NOW()其中track_id='$id'和user_id='$user'
如果您使用了所有选项,那么当查询被更新时,我如何节省时间?@KernElliott:您应该使用NOW()来设置数据,但是您可以将其放在where
子句中,以筛选要更新的数据。然后,我如何在更新查询时节省时间?在原始更新查询中,您只更新“评级”字段。您不是在更新“评级集”,而是在“where”子句中使用它。您应该像….那样编写更新查询。。。。。“更新rating
SETrating
='$rating',rating\u SET
=NOW(),其中track\u id='$id'和user\u id='$user'”