2014-01-24 54 views
0
$query=$db->prepare("SELECT *... 
while($data=$query->fetch(PDO::FETCH_ASSOC)){...} 

我有一个查询while循环打印出数据。查看while循环输出来自查询的任何数据

如何检查while循环是否没有取出任何数据(从db分配0行),因此我可以在屏幕上打印“0结果”。

我不想额外查询COUNT(*),是否有任何方式检查while循环?

+0

'如果($数据)''可以诀窍 –

+0

在'prepare()'和'fetch()'之间,你必须调用'execute()'...只是说'... –

回答

0

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

喜欢的东西:

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

加分号,感谢@Fred -ii

+0

缺少'$ flag = FALSE' –

1

你必须使用$sth = $query->execute()(和$sth->fetch()而不是$查询 - >取()),然后再$sth->rowCount会给你多少的结果。

0

所以你要计算你得到的结果的数量。在这种情况下,你可以算一个变种了内环路:

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"; 
    } 
}