在mysql数据调用(angular slimpphp)上只得到一条记录


only getting one record on mysql data call (angular-slimphp)

我正在尝试使用slim-php框架作为一个有角度前端的restful后端。我在从sql数据库中获取所有记录时遇到问题。我在控制器中使用以下代码:

    function refreshlistings() {
    Data.get('getAllListings').then(function(results) {
        $scope.lists = results;
        var tempdata;
        for (var i = 0; i < $scope.lists.length; i++) {
            $scope.lists[i].data = decrypt($scope.lists[i].data);
        }
        if (!$scope.lists) {
            $scope.lists = [];
        }
    });
}

在我的工厂:

obj.get = function(q) {
        return $http.get(serviceBase + q).then(function(results) {
            return results.data;
        });
    };

我的瘦API是这样的:

$app->get('/getAllListings', function(){
$db = new DbHandler();
$listings = array();
$listings = $db->getAllRecords("select * from LISTINGTABLE");
echoResponse(200, $listings);
});

在我的DbHandler类中:

public function getAllRecords($query) {
    $r = $this->conn->query($query) or die($this->conn->error.__LINE__);
    return $result = $r->fetch_assoc();    
}

我只从SQL中得到一条记录。

我试过了:

public function getAllRecords($query) {
    $r = $this->conn->query($query) or die($this->conn->error.__LINE__);
    while ( $row = $r->fetch_array(MYSQLI_ASSOC) ) {
    $data[] = $row;
    }
    return $data[];    
}

在我的DbHandler类中,但这给了我一个错误。有人能帮我吗?thx!

您只请求一行。如果你使用PDO,你可以这样做:

$q = $db->query("SELECT ... "); $results = $q->fetchAll();

如果使用mysqli,则必须遍历结果集并将行分配给数组。

此外,我在您的代码中看到您返回$data[]。您应该返回$data。