我有一个页面,我向用户显示50个图像,用户可以点击图像,并将此图像加载到另一个页面。现在我想将每个图像视图保存到数据库,即点击的图像ID的计数器。
所以我到目前为止所做的是在表中添加另一行,我称之为hits
。我在这里展示图片:
$result = $pdo->prepare("SELECT * FROM images ORDER BY id ASC LIMIT $start_from, 50");
$result->execute();
for($i=0; $row = $result->fetch(); $i++)
{
echo '
<h1><a href="post.php?id='.$row['id'].'">'.$row['title'].'</a></h1>
<img src="../upload/'.$row['name'].'" alt=""/>';
}
在post.php
中,用户只能看到他点击过的图像,我有这个:
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
$result = $pdo->prepare("SELECT * FROM images WHERE id= ?");
if ($result->execute(array($_GET['id'])))
{
for($i=0; $row = $result->fetch(); $i++)
{
echo '
// source to show that image
';
}
}
}
我的理解我必须使用类似的内容更新hits
行
UPDATE images SET hits = hits + 1 WHERE id = idofimage
我无法理解的是如何在当前代码中实现更新。还在哪里?
感谢任何帮助。
答案 0 :(得分:1)
您必须创建UPDATE语句,然后选择SELECT以显示该单个图像。应该是这样的:
let parameters = [
"data": jsonObj.object
]
注意:未经过测试,我还在学习PHP和MySQL,所以如果有更好的解决方案,请更正我。 感谢&#39; S
答案 1 :(得分:1)
你几乎解决了所有问题
只需在显示图片的同一位置添加更新代码
if(isset($_GET['id']) && is_numeric($_GET['id']))
{
$id = $_GET['id'];
$result = $pdo->prepare("SELECT * FROM images WHERE id= ?");
if ($result->execute(array($_GET['id'])))
{
//replace for by if because we are only getting one result
if($row = $result->fetch())
{
//update the hits
$update = $pdo->prepare("UPDATE images SET hits = hits + 1 WHERE id = ?");
//I prefer binding values and have a call to execute()
//but both options are ok
//$update->bindParam(1, $_GET['id'], PDO::PARAM_INT);
//$update->execute();
$update->execute(array($_GET['id']));
echo '
// source to show that image
';
}
}
}