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

God*_*ien 1 php mysql sql database backend

我正在为我的网站添加一个视图计数器.在代码中,我检查是否有一个带有帖子ID的IP.

例如,当post 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();
  }
Run Code Online (Sandbox Code Playgroud)

Moh*_*mpu 5

假设您正在使用PDO

在这里,您使用预准备语句来查询数据库,但是您没有获取数据库返回的结果

使用

$result = $checkIp->setFetchMode(PDO::FETCH_ASSOC);
if(count($result) > 0){
  .............
}
else{
  ..........
}
Run Code Online (Sandbox Code Playgroud)

你可以使用更简单

$checkIp->rowCount()
Run Code Online (Sandbox Code Playgroud)

这将返回您的查询所影响的行数