在开始时,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);
请帮我解决这个问题。
答案 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;
并相应地处理用户对象。