MySQL Select 计数和行计数

MySQL Select Count and rowCount

我想检查我的 table 中有多少个 B > 0。我的 Table 看起来像这样:

+---A---+---B---+
|   x   |   0   | 
|   x   |   0   |
|  ...  |  ...  |        
-----------------

B 列很重要。如果没有 row > 0 那么我就不会有 运行 另一个代码并且可以简单地回显文本。如果有一行 B>0 那么我需要知道这一点。

到目前为止我已经尝试过了,得到了图片中显示的结果。而且我查了table,没错

"SELECT COUNT(*) FROM table
                WHERE B>0";

我试图用下面的代码检查 0,但结果是 1。可能是因为它计算了图片中上面的行。

$statement_count = $pdo->prepare($check);
$statement_count->execute(); 
$count = $statement_count->rowCount();
echo $count;

那么,我可以做些什么呢?

不需要获取行数,需要获取查询结果并解析,然后读取"count(*)"

的值

如果你这样做:

$check = "SELECT B FROM table WHERE B>0"
$statement_count = $pdo->prepare($check);
$statement_count->execute(); 
$count = $statement_count->rowCount();
echo $count;

它将回显符合您条件的行数。 如果您将 rowCount 应用于执行 SELECT COUNT 的查询,根据定义它将 return 1 因为查询将始终 return 一行

另一个选项是 运行 您的计数查询

$check = "SELECT COUNT(*) FROM table WHERE B>0";
$statement_count = $pdo->prepare($check);
$statement_count->execute(); 
$count = $statement_count->fetchColumn();
echo $count;

您的查询总是 returns 恰好 1 行。您需要读取该行中的值。要只读取一行中的一列,您可以使用 PDOStatement::fetchColumn:

$count = $statement_count->fetchColumn();