我如何检查sql查询返回的值是否为空?我尝试使用if(empty($ var)),但这也没有用。继承我的代码
PHP代码:
while($row = mysql_fetch_array($Result))
{
if(count($row) == 0)
{
....
}
}
我如何检查$ row是否为空?
答案 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 ...行)。
......做出你的选择; - )