Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, заданный массив

в этом случае мои запросы работают нормально, я тестировал их на mysql.

Сначала у меня есть пользовательская функция запроса, которая выглядит так в классе MySQLDatabase

public function query($query) { $this->last_query = $query; $resultado = mysqli_query($this->connection, $query); $this->confirm_query($resultado); return $resultado; } private function confirm_query($result) { if ($result === FALSE) { print_r(mysqli_fetch_assoc($result)); $output = "Error on query". mysqli_error($this->connection)."<br/>"; $output .= "Last query : ".$this->last_query; die($output); } } public function fetch_array($result_set){ return mysqli_fetch_array($result_set); } 

Тогда у меня есть класс User, который использует класс MYSQL

  public static function find_by_id($id=0){ global $database; $result_set = $database -> query("SELECT * FROM users WHERE id={$id}"); $found = $database ->fetch_array($result_set); return $found; } 

И, наконец, я вызываю методы в моем index.php таким образом

 $result_set = User::find_by_id(1); $found_user = $database ->fetch_array($result_set); 

Вот некоторые факты: 1.- Это предупреждение происходит, когда я вставляю значение id, существующее в моей базе данных

Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, заданный массив

2.- Это предупреждение возникает, когда я вставляю значение id, которое не существует в моей базе данных.

Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, null задан

Вывод состоит в том, что mysqli_query не возвращает результаты, а объект результата, подобный этому, в случае, если он находит строку в базе данных с определенным идентификатором.

mysqli_result Object ([current_field] => 0 [field_count] => 5 [lengths] => [num_rows] => 1 [type] => 0)

Как я могу избавиться от этой ошибки?

Solutions Collecting From Web of "Предупреждение: mysqli_fetch_array () ожидает, что параметр 1 будет mysqli_result, заданный массив"

Метод found_by_id уже вызывает mysqli::fetch_array здесь:

 $found = $database ->fetch_array($result_set); 

Он возвращает извлеченный массив, если вы затем пишете:

 $result_set = User::find_by_id(1); $found_user = $database ->fetch_array($result_set);//fetch_array again 

вы передаете извлеченный массив обратно в fetch_array, который не работает

Это точно так же, как написать это:

 $result_set = $database -> query("SELECT * FROM users WHERE id=1"); $found = $database ->fetch_array($result_set); $found_user = $database->fetch_array($found);//<-- second call... 

Использовать это..

 $result_set = User::find_by_id(1); if($result_set){ $found_user = $database ->fetch_array($result_set); }