2015-07-03 11 views
0

我想用PHP脚本检索存储在mySQL表中的数据。我希望这些数据以数组形式返回,因为我在AngularJS应用程序中循环遍历它,并进行各种转换等。我将数据从数据中提取出来,但它仅作为数组中的一个项返回,即每行都是不作为数组的单独项返回。因为它代表我的代码是:mySQL没有返回一个数组到angularJS

PHP Get请求

<?php 
require 'config.php'; 
$pdo = Database::connect(); 
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

$sql = 'SELECT * FROM user_details'; 

$stmt = $pdo->prepare($sql); 

$stmt->execute(); 

$result = $stmt->fetchAll(PDO::FETCH_ASSOC); 

$json = json_encode($result); 

echo $json; 

Database::disconnect(); 


?> 

角控制器

$scope.userprofiles = []; 
$http.get('php/getUserDetails.php') 
.success(function(data) { 
    $scope.userprofiles = data; 
}); 

我也运行一些测试,看看是什么问题。具体来说,我看是否变量是一个数组:

$scope.varcheck = $scope.userprofiles.constructor === Array; 

这将返回true。然后我检查数组的长度:

$scope.numRecords = $scope.userprofiles.length; 

这回0

如果任何人有任何的想法这将是一个很大的帮助。

我也有一个问题,如果一个“/”或“”“存储在数据库中,它会引发get请求。我认为它提前退出。如果有人知道这件事,它会很棒!

感谢,

杰克

+0

你可以使用'typeof'来获取数据类型。 – Vineet

+0

嗨维尼。当我尝试typeof时,它返回的是数据是一个对象,而不是数组。看来PHP中的json_encode将数组转换为对象而不是数组。你知道如何将它作为一个对象数组而不是仅仅一个对象出现吗? –

+0

嗨。所以我发现问题是什么。我试图访问.then函数之外的$ scope.userprofiles。所以我可以把所有的代码放在.then函数中。但这似乎是一个相当不雅的解决方案。你知道是否有另一个? –

回答

0

$ HTTP方法返回一个承诺,不能重复,所以你必须通过回调来连接结果范围变量:

$scope.userprofiles = []; 
$http.get('php/getUserDetails.php') 
.then(function(response) { 
    $scope.userprofiles = response.data; 
}); 

希望它能帮助你:-)

+0

嗨维尼。谢谢回复。我已经尝试过,发现它只有一半有效。它可以用于ng-repeat或filter之类的东西。但是,如果你想运行一个for循环,它不会工作,因为它不会将数据识别为数组。那有意义吗? –

+0

查看编辑答案 – Vineet

+0

嗨Vineet。再次感谢您回到我身边。我已经尝试了第二种选择。但是它仍然会出现,因为数组长度为0.结果现在具有语法[[{...}]]。这很奇怪! –