使用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 参数调用存储过程不起作用