Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP函数总是返回false_Php_Mysql_Json - Fatal编程技术网

PHP函数总是返回false

PHP函数总是返回false,php,mysql,json,Php,Mysql,Json,我想知道为什么返回的结果总是false SQL和PHP代码如下所示: public function getAlbumList($userID){ $albumIDs= mysql_query("SELECT albumID FROM albumAccess WHERE userID='$userID'"); //$albums = mysql_query("SELECT albums.* FROM albums WHERE albumAccess.userID = '$user

我想知道为什么返回的结果总是
false

SQL和PHP代码如下所示:

public function getAlbumList($userID){
    $albumIDs= mysql_query("SELECT albumID FROM albumAccess WHERE userID='$userID'");
    //$albums = mysql_query("SELECT albums.* FROM albums WHERE albumAccess.userID = '$userID' AND albumAcess.albumID = albums.albumID");

    if($albumIDs){
        $albums=array();

        while($r = mysql_fetch_array($albumsIDs)){
            $albums[]=mysql_query("SELECT * FROM albums WHERE albumID = '$r'");     
        }
        return mysql_fetch_array($albums);

    }else{
        return false;
    }

}
获取结果并将其传递给android应用程序的PHP代码如下:

$userID=$_POST['userID'];

        $albumList = $db->getAlbumList($userID);

        if($albumList){
            $response["success"]=1;
            $response['album']=array();     
            while($r = mysql_fetch_assoc($albumList)){
                $response['album'][]= $r;                   
            }

            header('Content-type: text/json');
            echo json_encode($response);

        } else {
            //album list failed to be loaded
            $response["error"]=2;
            $response["error_msg"]="Error Loading Album List. Please try again later.";

            header('Content-type: text/json');
            echo json_encode($response);
        }           
当我检查返回内容的日志时,总是会收到错误消息

“加载相册列表时出错”


但是,只有当我试图返回数组时,我才得到它。如果我只返回
true
而不使用第二个SQL REQUEST,它将返回true。

您在这里做错了,请查看此更改

$albumIDs= mysql_fetch_row(mysql_query("SELECT albumID FROM albumAccess WHERE userID='$userID'"));  //changed this line

    while($r = mysql_fetch_array($albumsIDs)){
           $row=mysql_query("SELECT * FROM albums WHERE albumID = '$r'");
         $albums[]=mysql_fetch_row($row);  //added this line
    }

问题出在第一个函数中:

public function getAlbumList($userID){
    $albumIDs= mysql_query("SELECT albumID FROM albumAccess WHERE userID='$userID'");
    //$albums = mysql_query("SELECT albums.* FROM albums WHERE albumAccess.userID = '$userID' AND albumAcess.albumID = albums.albumID");

    if($albumIDs){
        $albums=array();

        while($r = mysql_fetch_array($albumsIDs)){
            $statement=mysql_query("SELECT * FROM albums WHERE albumID = '$r'");   
            $albums[]=mysql_fetch_row($statement); 
        }
        return $albums;

    }else{
        return false;
    }

}
以下行获取用户id不正确:

$albums[]=mysql_query("SELECT * FROM albums WHERE albumID = '$r'"); 
但您必须使用:

$albums[]=mysql_query("SELECT * FROM albums WHERE albumID = '".$r['albumID']."'"); 
同时,请更改以下内容:

while($r = mysql_fetch_array($albumsIDs)){
    $statement=mysql_query("SELECT * FROM albums WHERE albumID = '$r'");   
    $albums[]=mysql_fetch_row($statement); 
}
return $albums;
再见! 马可

试试这个功能

public function getAlbumList($userID){
  $albumIDs= mysql_query("SELECT albumID FROM albumAccess WHERE userID='$userID'");


if($albumIDs){
    $albums=array();

    while($r = mysql_fetch_array($albumsIDs)){
        $second = mysql_query("SELECT * FROM albums WHERE albumID = '".$r['albumID']."' ");  
         $alb = mysql_fetch_array($second) ;
        $albums[]= $alb['your_column_you_want_fetch'];  
    }
    return $albums;

}else{
    return false;
}

}

您还可以尝试使用联接或子查询:

public function getAlbumList($userID){
    $albumIDs= mysql_query("SELECT *
                            FROM albums
                            WHERE albumID IN (
                               SELECT albumID FROM albumAccess WHERE userID='$userID'
                            )");

    if(mysql_numrows($albumIDs) > 0){
        $albums=array();

        while($r = mysql_fetch_array($albumsIDs)){
            $albums[] = $r;    
        }

        return $albums;
    }

    return false;
}
PHP代码:

    $albumList = $db->getAlbumList($userID);

    if($albumList){
        $response["success"]=1;
        $response['album'] = $albumList;
    } else {
        //album list failed to be loaded
        $response["error"]=2;
        $response["error_msg"]="Error Loading Album List. Please try again later.";
    }   
    header('Content-type: text/json');
    echo json_encode($response);

首先,你确定有什么东西要归还吗?另外,在mysql_查询之后,可能添加一个“or die”(json_encode(array('errors'=>array('Internal issue:'=>mysql_error($conn‘)'));),以查看数据库连接是否存在问题,我正在查看表,并确保发送的userID与存在的内容和相册id匹配。第二部分是否没有问题?我仍然收到相同的错误消息,这意味着它返回的是错误的。非常感谢。我现在获得了成功,但是我的数组显示为0哦,让我更改代码的显示部分。