簡體   English   中英

在SQL While循環中找不到行時回顯

[英]Echo something when no rows are found in SQL While loop

我有一個循環遍歷sql數據庫中的所有行。 在循環內部我打印行的內容,但是當查詢返回0行時,該循環內的代碼不會被執行。 如果沒有找到行,如何讓它運行一些代碼?

例:

$qry = mysql_query("SELECT .......etc");
while ( $row1 = mysql_fetch_array($qry)) {
     if (empty($row1)) {
          echo "Nothing found";
     } else {
           echo "Found something";
      }
} 

我遇到的問題是,當while返回任何內容時,if根本不執行。

編輯:我知道我應該使用mysqli或類似的

首先,你應該停止使用mysql_函數,因為它們被描述,並開始使用mysqli_ functions, MySQLi類或PDO

要回答你的問題,有mysql_num_rows函數,它返回語句返回的行數:

$stmt = mysql_query("SELECT .......etc");
if (!mysql_num_rows($stmt)) {
    echo "Nothing found";
} else {
    while (/*...*/) {

    }
}

有關更多信息,請參閱此處http//php.net/manual/en/mysqli-result.num-rows.php

$qry = mysql_query("SELECT .......etc");
if (mysqli_num_rows($qry) === 0) {
      echo "Nothing found";
} else {
    while ( $row1 = mysql_fetch_array($qry)) {
        echo "Found something";
    } 
}

它會多次回顯“發現的東西”,每行一次。 如果你不想這樣,你也必須在while循環之外移動它。

您遇到的問題是,如果沒有返回結果,則根本不執行循環。

考慮使用顯式標志,這使代碼更容易閱讀:

<?php
$qry = mysql_query("SELECT .......etc");

$resultWasEmpty = true;
while ($row = mysql_fetch_array($qry)) {
    $resultWasEmpty = false;
    // do whatever you want to do with $row
} 

if ($resultWasEmpty) {
    echo "Nothing found";
}

或者,您可以簡單地使用函數返回結果集中的行數: mysql_num_rows($qry) ...


除了一般警告

您正在使用舊的,過時的和已棄用的mysql擴展。 您應該切換到當前的mysqli擴展或PDO包。

使用mysql_num_rows函數。

$qry = mysql_query("SELECT .......etc");
if( mysql_num_rows($qry) > 0 ) {
    while ( $row1 = mysql_fetch_array($qry)) {
        // do something with the record
    }
} else {
    // no record found in database
}

PHP 7中不再支持PS mysql_*擴展。您應該考慮使用mysqli_*

$qry = mysql_query("SELECT .......etc");
if(mysql_num_rows($qry)>0){
   while ( $row1 = mysql_fetch_array($qry)) {
      echo " found";
   } 
}else{ 
   echo "Nothing found";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM