PHP + 1确实增加了两个

时间:2012-09-05 00:51:36

标签: php mysql

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

我需要更改哪些内容才能将其添加到“视图”列?

2 个答案:

答案 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 }