目前,每次刷新页面时都会加载以下PHP代码。我每次加载页面时都会尝试更新视图列+1。为此,我首先从表中检索先前的视图值,然后运行另一个查询以将+添加到该数字。发生的问题是每次刷新页面时,代码以某种方式添加两个而不是1.因此,而不是$ viewsA变量增加+1,而是增加+2。
$query = mysql_query("SELECT * FROM Games WHERE pagename = '$game' ");
WHILE($datarows = mysql_fetch_array($query)):
$title = $datarows['title'];
$description = $datarows['desc'];
$img_url = $datarows['img'];
$cat = $datarows['cat'];
$pagename = $datarows['page'];
$rating = $datarows['rat'];
$viewsA = $datarows['view_count'];
$gameid = $datarows['id'];
endwhile;
$updateviews = $viewsA +1;
mysql_query("UPDATE `trainw_games`.`Games` SET `view_count` = '$updateviews' WHERE `Games`.`id` = $gameid;");
我需要更改哪些内容才能将其添加到“视图”列?
答案 0 :(得分:6)
我不认为while
循环适合此问题。我建议echo $viewsA . '-' . $updateviews;
查看添加前后的值。
但是,为什么不只运行一个UPDATE
语句?
UPDATE Games SET view_count = view_count + 1 WHERE Games.id = $gameid
当然,您应该停止使用mysql_
函数并使用MySQLi或PDO:
$stmt = $mysqli->prepare("UPDATE Games SET view_count = view_count + 1 WHERE Games.id = ?");
$stmt->bind_param($gameid);
$stmt->execute();
$stmt->close();
答案 1 :(得分:0)
您的数据库中有多行吗?如果是,则可能是由于覆盖了先前的值。
例如: -
如果第一行,则view_count为1。 而第二行view_count是2。
以2 + 1 = 3覆盖第一行 这让你觉得增加了2?
更新1: 好的,试试这个,把这个
$updateviews1 = $viewsA + 1;
if ($viewsA < $updateviews1) { //execute the viewsA + 1 }