使用php pdo选择原始计数不起作用[重复]

Posted

技术标签:

【中文标题】使用php pdo选择原始计数不起作用[重复]【英文标题】:Select count of raw using php pdo not working [duplicate] 【发布时间】: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 不要使用计数,选择​​字段。 【参考方案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 中不起作用

以上是关于使用php pdo选择原始计数不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

php pdo & iSeriesAccess ODBC - 使用 OUT 参数调用存储过程不起作用

参数化 PDO 查询和“LIMIT”子句 - 不起作用 [重复]

PDO 准备语句限制不起作用 [重复]

PHP PDO事务回滚不起作用

使用 PDO 连接 Mysql 数据库不起作用

PHP PDO MySQL可滚动游标不起作用