PHP Slim REST API在调用get函数后返回null


PHP Slim REST API returns null after calling get function

我使用PHP Slim开发了一个简单的REST API,并实现了一个简化的函数,该函数将在匹配通过thing REST调用的专辑名称时返回曲目列表。

这是我的index.php文件,用于进行那些rest调用,

http://localhost/my_gallery/v1/tracks/:name

$app->get('/tracks/:name', 'authenticate', function($album_keyword) {
    global $user_id;
    $response = array();
    $db = new DbHandler();
    // fetch task
    $result = $db->getTracksByName($album_keyword);
    if ($result != NULL) {
        $response["error"] = false;
        $response["album_name"] = $result["album_name"];
        $response["track_artist"] = $result["track_artist"];
        $response["track_name"] = $result["track_name"];
        echoRespnse(200, $response);
    } else {
        $response["error"] = true;
        $response["message"] = "The requested resource doesn't exists";
        echoRespnse(404, $response);
    }
});

这是getTracksByName()函数,用于在匹配专辑名称后返回曲目列表

public function getTracksByName($album_keyword) {
    $stmt = $this->conn->prepare(
        "SELECT `album`.album_name, `track`.track_artist, `track`.track_name "
        . "FROM `category_album` ,`album` , `track` "
        . "where `album`.album_id=`track`.album_id AND`album`.`album_name` LIKE ?");
    $stmt->bind_param("i", $album_keyword);
    if ($stmt->execute()) {
        $res = array();
        $stmt->bind_result($album_name, $track_artist, $track_name);
        $stmt->fetch();
        $res["album_name"] = $album_name;
        $res["track_artist"] = $track_artist;
        $res["track_name"] = $track_name;
        $stmt->close();
        return $res;
    } else {
        return NULL;
    }
}

现在,在进行REST调用后,它为每个跟踪项返回null值。我只想提一下,我已经从更改了SQL查询

。。。和CCD_ 1。album_name喜欢吗

。。。和CCD_ 3。album_id喜欢吗

和它的工作,但由于某种原因,它不能与以下查询一起工作

。。。和CCD_ 5。album_name喜欢吗

我是PHP的新手,任何形式的帮助都将不胜感激。

$stmt->bind_param("i", $album_keyword);绑定类型为INTEGER的参数。更改为$stmt->bind_param("s", $album_keyword);以绑定类型为album0的参数。

http://php.net/manual/en/mysqli-stmt.bind-param.php

您准备的语句代码中存在两个潜在问题。

首先,您告诉语句参数是一个int:

$stmt->bind_param("i", $album_keyword);

i表示整数。当您想要一个字符串(s)时。

第二个问题是,在准备好的语句中使用LIKE时,仍然需要标准LIKE中使用的%符号。

例如:

$stmt->bind_param("s", "%$album_keyword%");