我正在为我的网站添加一个浏览量计数器。 在代码中,我检查是否有一个 IP 与帖子的 ID。
例如,当帖子 ID 为 26 时,我的 IP 表中没有 ID 为 26 的 IP,它应该返回 0,但它返回了 1。
$userIp = $_SERVER['REMOTE_ADDR'];
$checkIp = $db->prepare("SELECT user_ip FROM user_ip WHERE word_id = '$idToShow'");
$checkIp->execute();
//This happens
if (count($checkIp) > 0) {
echo count($checkIp);
echo " ". $idToShow;
}
//instead of this
else {
$insertIP = $db->prepare("INSERT INTO user_ip (user_ip, word_id) values('$userIp', '$idToShow')");
$insertIP->execute();
$updateView = $db->prepare("UPDATE words set views = views + 1 WHERE id = '$idToShow'");
$updateView->execute();
}
最佳答案
假设您正在使用 PDO
这里您使用准备好的语句来查询数据库,但您没有获取数据库返回的结果
使用
$result = $checkIp->setFetchMode(PDO::FETCH_ASSOC);
if(count($result) > 0){
.............
}
else{
..........
}
你可以使用更简单的方法
$checkIp->rowCount()
这将返回受查询影响的行数
关于PHP:使用 count() 获取 1 而不是 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014694/