所以我正在为我的表弟创建一个钢琴图书馆网站。
目前我使用 foreach 函数来显示我数据库中的所有数据。现在,这很好用,我设法让一些功能正常工作,但我遇到的一个问题是“计数器”。
超级简单的概念,除了我想为每个条目设置一个计数器。
“计数器”是指在单击链接后,它会在计数中添加 +1。这样每个链接都会有“访问 100 次”或“访问 34 次”等。
我尝试了以下方法:
if($mysqli){
$result = mysqli_query($mysqli,"SELECT * FROM testtable ".$orderbyfilter);
$rows = $result->fetch_all(MYSQLI_ASSOC);
foreach($rows as $row) {
echo "<tr id='entry'><td>";
echo ucwords($row['name']);
echo "</td><td align='center'>";
echo '<a href="' . $row['url'] . '">url</a>';
echo "add hit:";
echo "<a href='?action=callfunction'>Click</a>";
//current counter script
if(isset($_GET['action']) && $_GET['action'] == 'callfunction'){
$hitcount = $row['hitcount'] + 1;
$id = $row['id'];
// why doesn't this work?
$sql="UPDATE testtable SET hitcount='$hitcount' WHERE id='".$id."'";
$result=mysqli_query($con,$sql);
}
echo "</td><td align='center'>";
echo $row['level'];
echo "</td><td align='center'>";
echo $row['hitcount'];
echo "</td></tr>";
}
mysqli_close($mysqli);
} else {
echo "table did not correctly display!";
}
显然方法:
$sql="UPDATE testtable SET hitcount='$hitcount' WHERE id='".$id."'";
不起作用,因为当我单击链接时,它会更新具有相同命中计数的所有条目。但是,当我将其更改为:
$sql="UPDATE testtable SET hitcount='$hitcount' WHERE id='2'";
它工作得很好,它只修改了行的命中计数id=2
。
显然,问题与将"foreach"
and 设置$row[id]
为变量有关,但老实说,我可以使用一些帮助。
它与变量的变量有关吗?我没有线索。任何帮助表示赞赏。