4

我正在尝试检查 mysql_fetch_array() 函数是否返回空数组。但是我的代码似乎不起作用。在这里,我想确保如果数组为空,我想显示正在建设的消息。

代码 :

$queryContents= queryMembers();
$exeQuery = mysql_query($queryContents);
while($fetchSet = mysql_fetch_array($exeQuery)) {
   if(count($fetchSet) == 0) {
     echo "This Page is Under Construction";
   }else{
     // something else to display the content
   }
}

如何检查以实现此类功能?

4

6 回答 6

14

使用 mysql_num_rows 来计算行数。尝试这个。

$exeQuery = mysql_query($queryContents);

if(mysql_num_rows($exeQuery)== 0){
   echo "This Page is Under Construction";
}
else{
   while($fetchSet = mysql_fetch_array($exeQuery)) {

     // something else to display the content

   }
}
于 2012-08-03T06:49:17.043 回答
5

你真的应该使用mysql_num_rows http://us2.php.net/manual/en/function.mysql-num-rows.php

但是,附带说明一下,您应该改用 php empty()http://us2.php.net/empty

于 2012-08-03T06:49:18.727 回答
4

当您使用 mysql_fetch_array() 时,它会在您使用 while 循环时一一返回数据集中的行。

如果没有记录,则不会执行while循环。在这种情况下,声明一个布尔变量并在它进入 while 循环时使其为真。喜欢:

$queryContents= queryMembers();
$exeQuery = mysql_query($queryContents);
$recordExists = 0;
while($fetchSet = mysql_fetch_array($exeQuery)) {
     if($recordExists == 0 )
       $recordExists = 1;
     // something else to display the content

}

if($recordExists == 0 ){
    echo "This Page is Under Construction";
}

希望这有效!

于 2012-08-03T06:53:17.433 回答
1

你可以这样做:

while($r[]=mysql_fetch_array($sql));
// now $r has all the results
if(empty($r)){
  // do something
}

来源:php文档

于 2012-08-03T06:52:18.013 回答
0

尝试这个

if(empty($fetchSet) 
{
   echo "This Page is Under Construction";
}
else
{
 // something else to display the content
}
于 2012-08-03T06:49:59.710 回答
0

如果没有结果,您在 while 循环中的代码永远不会运行。如果没有更多结果,mysql_fetch_array 返回 null/false。你需要做的是先检查mysql_num_rows,然后再检查。

$queryContents= queryMembers();
$exeQuery = mysql_query($queryContents);

 if(mysql_num_rows ($exeQuery) == 0) {
     echo "This Page is Under Construction";
 }

while($fetchSet = mysql_fetch_array($exeQuery)) {
    // something else to display the content
}
于 2012-08-03T06:55:42.710 回答