У меня есть следующий код 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 пользователя, и у них нет нулевых столбцов.
$ 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) );
$this->conn
? Я считаю, что вам нужно перебирать что-то вроде$row->fetch()
, а не только$row