【问题标题】:Select count of raw using php pdo not working [duplicate]使用php pdo选择原始计数不起作用[重复]
【发布时间】:2016-11-06 14:41:37
【问题描述】:

我尝试选择关注我的任何站点成员的用户数,但即使数据库中不为空,它也会继续返回 0,否则它会在为空时显示 1

<?php
 $db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
 $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $followings = $db_conn->prepare("SELECT COUNT(*) FROM memberfollow WHERE following = :followMe");
      $followings->bindParam(":followMe", $_POST['username']);
      $followings->execute();
      $Numfollowing = $followings->rowCount();//this will return 0 when is empty and not empty
      $col = $followings->fetchColumn();// this will return 1 in all
  echo "FL".$Numfollowing."/".$col."<br/>";  
?>

【问题讨论】:

  • 你正在做一个 count(),这意味着你总是会得到至少一行数据。如果哪里没有与您的where 匹配的行,您只会得到一行包含0 的行。
  • 如何做才能使它正确? @MarcB
  • 不要使用计数,选择​​字段。

标签: php pdo


【解决方案1】:

你可以写

    <?php
 $db_conn = new PDO('mysql:host='.DB_HOST.';dbname='.DB_NAME,DB_USERNAME,DB_PASSWORD);
 $db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      $followings = $db_conn->prepare("SELECT * FROM memberfollow WHERE following = :followMe");
      $followings->bindParam(":followMe", $_POST['username']);
      $followings->execute();
      $Numfollowing = $followings->rowCount();//this will return 0 when is empty and not empty
      $col = $followings->fetchColumn();// this will return 1 in all
  echo "FL".$Numfollowing."/".$col."<br/>";  
?>

这可能会解决您的问题

【讨论】:

  • 来自手册: 如果关联 PDOStatement 执行的最后一条 SQL 语句是 SELECT 语句,则某些数据库可能会返回该语句返回的行数。然而,这种行为并不能保证适用于所有数据库,并且不应依赖于可移植应用程序。它在 MYSQL 中不起作用
猜你喜欢
  • 2012-06-12
  • 1970-01-01
  • 2012-09-30
  • 2017-07-02
  • 2017-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多