如何检查从SQL / PHP查询返回的值是否为空?

时间:2011-12-07 14:46:46

标签: php mysql

我如何检查sql查询返回的值是否为空?我尝试使用if(empty($ var)),但这也没有用。继承我的代码

PHP代码:

        while($row = mysql_fetch_array($Result)) 
        { 
            if(count($row) == 0) 
            { 
                .... 
            } 
       } 

我如何检查$ row是否为空?

3 个答案:

答案 0 :(得分:10)

这是执行此操作的正确方法,您可以通过查找返回结果中的行数来检查结果是否为空。 sql中有一个函数可以执行此操作mysql_num_rows。以下是使用它的方法:

if (mysql_num_rows($Result) == 0) { 
   //results are empty, do something here 
} else { 
   while($admin_row = mysql_fetch_array($Result)) { 
      //processing when you have some data 
}  

答案 1 :(得分:1)

if (mysql_num_rows($Result) == 0) { 
    //error here
} else   {
    //loop here
}

如果为空,则为您提供错误的位置和处理结果的位置。

答案 2 :(得分:1)

最简单的方法是使用mysql_num_rows()

$cnt = mysql_num_rows($Result);
if ( 0===$cnt ) {
    echo 'no records';
}
else {
    while( false!=($row=mysql_fetch_array($Result)) ) {
        // ...
    }
}

但请记住,此函数返回到目前为止已从MySQL服务器传输到客户端的记录数。这不一定是总记录数。只要您使用mysql_query()即可。但是如果你有例如您可能希望使用mysql_unbuffered_query()的大型结果集,然后您不能依赖mysql_num_rows()(为了您的目的),因为在调用mysql_fetch_xyz()之前没有传输任何记录。

但你可以使用像

这样的东西
$cnt = 0;
while( false!=($row=mysql_fetch_array($Result)) ) {
    $cnt += 1;
    // ...
}
if ( 0===$cnt ) {
    echo 'no records';
}

现在你有一个额外的变量作为计数器。你可能想避免这种情况,而是使用像

这样的东西
$row = mysql_fetch_array($Result);
if ( !$row ) {
    echo 'no records';
}
else {
    do {
        // ...
    } while( false!=($row=mysql_fetch_array($Result)) ) ;
}

使用这种方法你没有额外的变量,但有一些代码重复($ x = fetch ...行)。
......做出你的选择; - )