在SQL While循环中找不到行时回显

时间:2016-04-01 10:25:50

标签: php mysql

我有一个循环遍历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 isn不会被执行。

编辑:我知道我应该使用mysqli或类似的

5 个答案:

答案 0 :(得分:3)

首先,您应停止使用mysql_功能,因为它们已被停用,并开始使用mysqli_个功能,MySQLi类或PDO

要回答你的问题,有mysql_num_rows函数返回语句返回的行数:

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

    }
}

答案 1 :(得分:0)

有关详情,请参阅此处: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循环之外。

答案 2 :(得分:0)

你遇到的问题是,如果没有返回结果,你的循环根本就不会被执行。

考虑使用显式标志,这使代码更容易阅读:

<?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程序包。

答案 3 :(得分:0)

使用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
}

P.S。 PHP 7不再支持mysql_*扩展。您应该考虑使用mysqli_*

答案 4 :(得分:0)

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