2014-01-24 53 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"; 
    } 
}