Я пытаюсь получить данные, хранящиеся в таблице mySQL, с помощью PHP-скрипта. Я хочу, чтобы эти данные возвращались в виде массива, потому что я затем прокручивал его в своем приложении AngularJS и проводил различные преобразования и т.д. Я получаю данные просто отлично, но он возвращается как один элемент в массиве, т.е. Каждая строка не возвращается как отдельный элемент массива. Мой код в его нынешнем виде:
PHP Получить запрос
<?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.
Если бы у кого-то были какие-то мысли, это было бы большой помощью.
У меня также есть проблема, что если "/" или "" хранится в базе данных, он выдает запрос на получение. Я предполагаю, что он уходит рано. Если бы кто-нибудь знал об этом, это было бы здорово!
Благодаря,
разъем
Методы $ http возвращают обещание, которое нельзя повторить, поэтому вам нужно приложить результаты к переменной области через обратные вызовы:
$scope.userprofiles = [];
$http.get('php/getUserDetails.php')
.then(function(response) {
$scope.userprofiles = response.data;
});
Надеюсь, это может вам помочь :-)