JSON Array возвращает ноль

1

У меня есть следующий код php:

$row=$this->conn->prepare('SELECT * FROM users');  

$row->execute();//execute the query  
$json_data=array();//create the array  
foreach($row as $r)
{  
    $json_array = array();
    $json_array['id'] = $r['id'];  
        $json_array['unique_id'] = $r['unique_id'];  
        $json_array['name'] = $r['name'];  
        $json_array['email'] = $r['email'];  
        $json_array['encrypted_password'] = $r['encrypted_password'];  
        $json_array['salt'] = $r['salt'];  
        $json_array['created_at'] = $r['created_at'];  
        $json_array['updated_at'] = $r['updated_at'];  
        $json_array['phone_number'] = $r['phone_number']; 

    //here pushing the values in to an array  
        array_push($json_data,$json_array);  

}  

//built in PHP function to encode the data in to JSON format  
return json_encode($json_data);

Когда я запускаю его, я получаю только следующее:

[{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null},{"id":null,"unique_id":null,"name":null,"email":null,"encrypted_password":null,"salt":null,"created_at":null,"updated_at":null,"phone_number":null}]

Моя база данных содержит только 2 пользователя, и у них нет нулевых столбцов.

  • 2
    Что такое $this->conn ? Я считаю, что вам нужно перебирать что-то вроде $row->fetch() , а не только $row
  • 0
    Вы можете получить данные?
Показать ещё 3 комментария
Теги:
arrays
mysqli
push

1 ответ

1
Лучший ответ

$ row - это экземпляр mysqli_stmt; вы не можете использовать его напрямую в качестве прохода в foreach(), как экземпляр mysqli_result (PHP> = 5.4.0).

$statement = $this->conn->prepare('
    SELECT
        id,
        unique_id,
        name,
        email,
        encrypted_password,
        salt,
        created_at,
        updated_at,
        phone_number
    FROM
        users
');

if ( !$statement ) {
    yourErrorHandler();
}

if ( !$statemnt->execute() ) {
    yourErrorHandler();
}

$result = $statement->get_result(); // PHP 5 >= 5.3.0,
$json_data=[];
foreach($result as $row) { // PHP 5 >= 5.4.0
    $json_data[] = $row;
}
return json_encode($json_data);

альтернативная версия:

$result = $this->conn->query('
    SELECT
        id,
        unique_id,
        name,
        email,
        encrypted_password,
        salt,
        created_at,
        updated_at,
        phone_number
    FROM
        users
');

if ( !$result ) {
    yourErrorHandler();
}

return json_encode( $result->fetch_all(MYSQLI_ASSOC) );
  • 0
    Я попробовал первый, и он сохраняет, что я callind к неопределенному методу get_results. Я пытался получить и все еще не работает. Альтернативная версия дает мне эту ошибку: «вызов неопределенного метода mysqli_result :: fetch_all ()»
  • 0
    Неважно, я исправил это. Я должен был вручную получить результат. БОЛЬШОЕ СПАСИБО! Я боролся с этим в течение 2 дней. люблю тебя!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню