【问题标题】:How to find out how many rows match a rule?如何找出有多少行匹配规则?
【发布时间】:2018-10-01 14:31:48
【问题描述】:

我想找出我的数据库表中有多少行符合某个规则,特别是“类别”匹配另一个变量并且“已发布”是今天或更早。然后我想简单地回显那个数字。

不过,我不知道该怎么做。

我认为我可以使用 count(),但我不确定如何只调用单个列并将每一行的结果放入数组中。

谢谢!

【问题讨论】:

  • 好吧,对于初学者,您知道如何连接到您的数据库并对其执行查询吗?
  • 显示你的数据库结构或条件或 php 语句

标签: php sql database


【解决方案1】:

使用 SQL 执行此操作:

在你的数据库中试试这个(你的列/表可能不同):

SELECT count(*) FROM blog_posts WHERE category = 'hot_stuff' and published <= NOW();

然后在 PHP 中执行此操作,具体取决于您的框架和与数据库的连接:

    $myCategory = 'hot_stuff';
    $myTable = 'blog_posts';

    $sql = "SELECT count(*) FROM {$myTable} WHERE category = '{$myCategory}' and published <= NOW();";

    $rowCount = $db->query($sql);
    echo $rowCount;

【讨论】:

    【解决方案2】:
    1. Connect to your database.

      $pdo = new PDO($dsn, $user, $password);
      
    2. Create a prepared statement. 这是必不可少的,因为您需要将类别的值从应用程序传递给查询。不必传递当前日期的值,因为数据库可以为您提供该值。 ? 是您传递的参数将被绑定的占位符。

      $stmt = $pdo->prepare("SELECT COUNT(*) FROM your_table 
                         WHERE category = ? AND published  <= CURDATE()");
      

      不要将参数连接到您的 SQL 字符串中(例如 WHERE category = '$category'),因为这会造成 SQL injection 漏洞。

    3. Execute the prepared statement 使用您指定的类别值。

      $stmt->execute([$category]);   // assuming you have already defined $category
      
    4. 使用fetchColumn 返回单个值,即符合条件的行数。

      echo $stmt->fetchColumn();
      

    【讨论】:

      猜你喜欢
      • 2013-11-25
      • 2011-09-24
      • 1970-01-01
      • 2018-06-04
      • 2015-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多