2011-12-07 56 views
2

我该如何检查从sql查询返回的值是否为空?我尝试使用if(empty($ var)),但那也没用。我的继承人代码如何检查从SQL/PHP查询返回的值是否为空?

PHP代码:

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

我将如何检查是否$行是空的?

+0

您的意思是什么“空”? – VolkerK

+0

请注意,mysql扩展已过时,正在弃用。相反,新代码应该使用mysqli或PDO,它们都具有重要的优点,例如预准备语句。 – outis

回答

8

这是正确的方法,您可以通过查找返回结果中的行数来检查结果是否为空。 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 
} 
+0

请注意,您应该使用===而不是==。 – Mgamerz

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

给你一个错误,并与结果的工作场所的地方,如果他们不

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 =取...行)。
...做出您的选择;-)

相关问题