2

現在、ページが更新されるたびに次のPHPコードがロードされています。ページが読み込まれるたびに、ビューの列+1を更新しようとしています。これを行うには、最初にテーブルから前のビューの値を取得し、次に別のクエリを実行してその数値に+を追加します。発生している問題は、ページを更新するたびに発生します。コードは、1ではなく2を追加します。したがって、$ 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です。2番目の行のview_countは2です。

これは、最初の行を2 + 1 = 3でオーバーライドします。これにより、2増加したと思いますか?

更新1:わかりました、これを試して、これを入れてください

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