SQL、PDO和PHP条件行计数()函数

SQL、PDO和PHP条件行计数()函数,php,mysql,pdo,Php,Mysql,Pdo,我正在Apache PHP服务器页面中运行以下SQL PDO命令: $query = " SELECT id, building_name FROM campus "; $stmt = $con->prepare($query); $stmt->execute(); $num = $stmt->rowCount(); // HERE IS THE FUNCTION 我希望rowCount()函

我正在Apache PHP服务器页面中运行以下SQL PDO命令:

$query = "
    SELECT
        id,
        building_name
    FROM
        campus
";

$stmt = $con->prepare($query);
$stmt->execute();
$num = $stmt->rowCount();          // HERE IS THE FUNCTION
我希望
rowCount()
函数只返回“building_name”=“IT House”所在的行数,而不是返回整个行数。我似乎找不到有关此函数的任何信息,例如它需要哪些参数等。知道如何在赋值操作中修改函数调用吗?提前谢谢


注意:我知道我可以通过
SELECT
命令来调节查询,但我不想将我的查询限制在那里。我需要查询来表示所有行,但我需要rowCount来仅表示所需的行。

如果不想将条件添加到SQL语句中,您需要迭代所有结果,然后根据
building_name
是否等于IT House增加一个计数器

您可以在此处找到rowCount的文档:

您对结果所做的其他操作是否会阻止您仅选择具有该条件的行

SELECT id, building_name FROM campus WHERE building_name = 'IT House'
更好的是,您可以选择计数:

SELECT COUNT(*) FROM campus WHERE building_name = 'IT House'
否则,您必须遍历结果以确定满足条件的行数:

$stmt->execute();
$result = $stmt->fetchAll();
$num = 0;
foreach($result as $row) {
  if( 'IT House' == $row['building_name'] ) {
    $num++;
  }
}

为了简单起见,这就是我试图避免的。是否没有可以用PHP编写的参数或条件来过滤分配?是的,我正在做的另一件需要所有行的事情是写入/更新一个JSON文件,该文件存储所有行,以便在前端使用。但后端或此脚本也用于编辑特定建筑名称的行;这是从web表单的GET请求接收的参数。到目前为止,我还没有找到更好的方法或位置来更新我的JSON文件,但这似乎暂时有效。如果您想计算行的子集,但让一个查询返回完整的行集,那么您需要两个查询。@halfer我喜欢这个主意。我可以在同一PDO会话中运行两个单独的查询吗?我现在不在我的工作站上尝试。此外,如果可能的话,这样做是否是一种不好的做法?谢谢。是的,你需要多少就用多少。我猜像我们现在使用的页面,在堆栈溢出上,可能使用10或20来渲染。以这种方式拆分数据检索的一个有趣的功能是,虽然您可以在一个复杂的查询中执行大量操作,但有时使用几个更简单的查询会更快,即使考虑到到到数据库服务器的多个网络往返。@halfer非常感谢,我想我会同意这个建议。在回答你后面的问题时:我会说,让可读的代码高效运行是一个很好的实践。有时这两者之间存在矛盾(代码可能需要更少的可读性才能运行得更快),但如上所述,在一个页面中运行多个读/写查询是完全正常的。