【问题标题】:check while loop out put any data from query检查while循环输出查询中的任何数据
【发布时间】:2014-01-24 10:51:30
【问题描述】:
$query=$db->prepare("SELECT *...
while($data=$query->fetch(PDO::FETCH_ASSOC)){...}

我有一个查询使用 while 循环打印数据。

如何检查 while 循环是否没有提取任何数据(从 db 中提取 0 行),以便在屏幕上打印“0 结果”。

我不想对 COUNT(*) 进行额外查询,有什么方法可以从 while 循环中检查吗?

【问题讨论】:

  • if (!$data) 可以解决问题
  • prepare()fetch()之间,你必须打电话给execute()...只是说'...。

标签: php


【解决方案1】:

你必须先使用$sth = $query->execute()(和$sth->fetch()而不是$query->fetch()),然后$sth->rowCount会给你结果的数量。

【讨论】:

    【解决方案2】:

    只需在循环中放置一个标志,以确保您至少输入一次。

    类似:

    $flag = false;
    $query=$db->prepare("SELECT *...");
    while($data=$query->fetch(PDO::FETCH_ASSOC)){
        $flag = true;
    }
    if ($flag) {} //entered
    

    添加分号,谢谢@Fred -ii

    【讨论】:

    • $flag = false 缺少结束分号
    【解决方案3】:

    因此,您想计算获得的结果数量。在这种情况下,您可以只在循环内计数一个 var:

    while($data=$query->fetch(PDO::FETCH_ASSOC)){
        $i++;
        //your code here
    }
    

    如果你想检查你是否没有数据,你可以检查$data

    while($data=$query->fetch(PDO::FETCH_ASSOC)){
        if($data === false) {
           echo "0 result";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-03-11
      • 1970-01-01
      • 2012-10-05
      • 2014-09-04
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      相关资源
      最近更新 更多