2017-01-30 10 views
-3

Я пытаюсь запросить некоторые данные из моей базы данных. Я пытаюсь сделать GET и поместить их в массив, чтобы вывести его как JSON. Однако он возвращает пустой массив. Мой вопрос: почему моя база данных содержит информацию, и я знаю, что мои подключения и т. Д. Являются правильными, потому что я получил работу POST.Query возвращает пустой массив

Я использую Slim Framework v3 и для связи PDO.

Это то, что я пытаюсь сделать:

$app->get('/users/get', function ($request, $response, $args) { 
require 'db.class.php'; 
$database = new Database(); 
$database->query("SELECT * FROM `workbungee`.`user`"); 
$users = array(); 
while ($row = mysql_fetch_assoc($database)) { 

    $users[] = $row; 
} 
    $struct = array("User" => $users); 
    print json_encode($struct); 
    return $response->write("Hello " . count($jobArray)); 

}); 

Это то, что она возвращает:

{ 
    "User": [] 
} 

В db.class.php У меня есть следующие функции:

public function resultset(){ 
     $this->execute(); 
     return $this->stmt->fetchAll(PDO::FETCH_ASSOC); 
    } 

    public function single(){ 
     $this->execute(); 
     return $this->stmt->fetch(PDO::FETCH_ASSOC); 
    } 

Если я пытаюсь эхо внутри цикла while, я не могу получить какой-либо вывод, но только код состояния: 200.

Я пробовал так много других решений и прочитал десяток вопросов.

+0

'$ result = $ database-> query (" SELECT * FROM 'workbungee'.'user'); $ users = array(); while ($ row = $ result-> fetch_array (MYSQLI_ASSOC)) { \t \t $ users [] = $ row; \t} ' –

+0

https://arjunphp.com/creating-restful-api-slim-framework/ –

+0

В последние годы я в значительной степени прекратил отвечать на вопросы о устаревшем API mysql_ PHP. Просто говорю'. – Strawberry

ответ

1

Как вы используете PDO, не MySQL, вы должны использовать методы PDO. Одним из них является выделенным метод получения вам массив всех возвращенных строк, что делает ваш код запроса по существу один вкладыш:

$users = $database->query("SELECT * FROM user")->fetchAll(PDO::FETCH_ASSOC); 

Кроме того, не ясно, что вы хотите, чтобы вернуться, массив пользователей или просто счет? Если последнее, вы не должны выбирать записи, но должны попросить базу данных выполнить подсчет. Для этого случая у PDO снова есть у вас метод,

$count = $database->query("SELECT count(*) FROM user")->fetchColumn(); 
+0

Мой код беспорядок, абсолютно согласен, потому что я возился с различными решениями. Извините, если я не понял, но да, я хочу вернуть массив с пользователями. Но решение дает мне ошибку '" PHP Неустранимая ошибка: вызов функции-члена fetchAll() на null ". Я также прочитал документацию PHP PDO. Это было первое, что я пробовал. –

+0

Если я использую 'mysql_fetch_assoc ($ users)'. Он возвращает код состояния 200, но не возвращает массив с населенными пользователями. –

+0

хорошо, что это за база данных? –

1

Почему вы используете mysql_fetch_assoc. вам нужно использовать

$database->fetch(PDO::FETCH_ASSOC);

while ($row = $database->fetch(PDO::FETCH_ASSOC)) { 
    $users[] = $row; 
    } 

 Смежные вопросы

  • Нет связанных вопросов^_^