2

目前,每次刷新页面时,我都会加载以下 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;");

我需要更改什么才能使其仅向视图列添加 +1?

4

2 回答 2

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(); 
于 2012-09-05T01:01:02.197 回答
0

您的数据库中有多行吗?如果是,则可能是由覆盖先前的值引起的。

例如:-

如果第一行 view_count 为 1。而第二行 view_count 为 2。

用 2 + 1 = 3 覆盖第一行 这让你认为增加了 2?

更新1:好的,试试这个,把这个

$updateviews1 = $viewsA + 1;
if ($viewsA < $updateviews1) { //execute the viewsA + 1 }
于 2012-09-05T01:10:36.860 回答