PHP:使用 count() 获取 1 而不是 0

标签 php mysql sql database backend

我正在为我的网站添加一个浏览量计数器。 在代码中,我检查是否有一个 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/

相关文章:

php - 在 PHP 中将 MySQL 记录集转换为 JSON 字符串

php - 加入、联合、合并?

php - 检索通过 POST 发送到 PHP 脚本的 json 字段时出错

sql - Yii SQL CommandBuilder 获取随机结果

php - 如何在 MySQL 存储过程中计算这些日期差、乘法?

php - 将可选空白字段添加到 php 表单

php - 我将如何返回数组中与任何 $_POST 结果不匹配的任何项目

MYSQL:从一列中选择具有多个值的查询

SQL Server - 加入 4 个快速查询给我一个慢速查询

sql - 加快搜索带有子记录最近日期的日期(postgresql)