タイトルの質問を簡潔に要約する方法が見つかりませんでした。詳しく説明させてください。
データベースから画像バイナリ オブジェクトを取得し、HTML img タグによって呼び出されたときに別のページに表示する PHP スクリプト "getImg.php" を使用する Web サイトがあります。
人々が画像を表示した回数を記録したいので、適切な画像の「views」プロパティをインクリメントする単純な行を追加しました。
これは簡単だと思っていましたが、2 倍になっていることがわかりました。これを回避する私の厄介な方法は、「ビュー」列をフロートにし、0.5ずつインクリメントして1インクリメントすることでした。ただし、今日データベースを表示して、いくつかの画像で 0.5 を見つけました!
エンドプリントをコメントアウトすると、正しく機能します。HTML タグからの呼び出しとスクリプト自体が 2 つの呼び出しとしてカウントされると仮定しましたか? しかし、これは他の人には当てはまらないようです。
これは私だけの設定ですか?
<?php
# Connect to db
include('db.php');
# Get ID
$id = $_GET['id'];
if(!is_numeric($id)) exit;
$q = $db->prepare("SELECT tNail,image,format FROM gallery WHERE id = '$id'");
$q->execute();
$row = $q->fetch(PDO::FETCH_ASSOC);
if(array_key_exists("thumb", $_GET))
$img = base64_decode($row["tNail"]);
else
{
$img = base64_decode($row["image"]);
# Add to views if not thumb
// 0.5 because script called twice due to print?
$db->query("UPDATE gallery SET views = (views + 0.5) WHERE id = '$id'");
}
switch($row["format"])
{
case ".jpg":
header("Content-type: image/jpeg");
break;
case ".png":
header("Content-type: image/png");
break;
}
print $img;
?>
助けてくれてありがとう。