我无法简明地总结标题中的问题,让我详细说明一下:
我有一个网站,使用PHP脚本“getImg.php”从我的数据库中获取图像二进制对象,并在调用HTML img标签时在单独的页面上显示它。
我想记录人们查看图像的次数,因此我添加了一条简单的代码来增加相应图像的“views”属性。
我认为这很简单,但事实证明它会增加两次。我的解决办法是将“views”列设置为浮点数,并通过增加0.5来得到1个增量。然而,我今天查看我的数据库发现有些图像中出现了0.5!
当我注释掉最后的打印语句时,它就可以正常工作。我以为来自HTML标记的调用加上脚本本身计算为两个调用?但其他人似乎并非如此。
这只是我的设置问题吗?
<?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;
?>
感谢您的任何帮助。