空表显示错误

时间:2015-01-12 08:23:16

标签: php

在开始时,Users表为空,因此调用学生正在给出的函数" UNDEFINED USER"而不是空的json代码。 这是功能:

public function student() 
        {
             $result= mysql_query(" select * from users where cat_id=1 ");

              while ($row = mysql_fetch_assoc($result)) 
                    {
                     $user[]=array_filter($row);
                    }
                    return $user;    
        }

这是函数调用。

$user['student']=$obj->student();
       echo json_encode( $user);

请帮我解决这个问题。

4 个答案:

答案 0 :(得分:1)

您应该定义$user,当找到0条记录时将返回该文件。

$result= mysql_query(" select * from users where cat_id=1 ");

$user = array();

if (mysql_num_rows($result) > 0) {
    while ($row = mysql_fetch_assoc($result)) {
        $user[]=array_filter($row);
    }
}

return $user;  

然后我添加了num_rows条件,也许您可​​以从此代码中删除它。我不确定,我没有测试过。

答案 1 :(得分:0)

首先不要使用mysql_* api,不推荐使用它,而是使用PDO代替

以下是为您更新的代码,提供默认值以返回$user将解决您的问题

public function student() 
    {
         $result= mysql_query("select * from users where cat_id=1 ");
         //make default value as an empty array 
         $user = array();

         if($result && mysql_num_rows($result) > 0) {
            while ($row = mysql_fetch_assoc($result)) 
                {
                 $user[]=array_filter($row);
            }
         }

         return $user;    
    }

答案 2 :(得分:0)

如果没有行,

mysql_fetch_assoc会返回false,因此永远不会设置$user的值,从而导致错误$user is undefined

默认情况下,您可以将$user设置为[],或者将更强大的错误检查设置到位。

答案 3 :(得分:0)

只需添加:

if (count($user) > 0) {
    return $user;
}
return false;

并相应地处理用户对象。