2016-08-15 3 views
1

Я уверен, что этот вопрос нигде не задавался даже в блоге создателя этого класса.mysqli_multi_query ошибка базы данных базы данных

С утра я начал использовать класс базы данных php bennettstone. Я пытался добавить MYSQLI_MULTI_QUERY в этот класс, чтобы обрабатывать сразу несколько запросов.

до сих пор, я был в состоянии изменить до уровня ниже. Но это не работает. Я очень беден с классами & Это моя первая попытка когда-либо !!

Я получаю ошибку в двух строках & не знаю, как я получу доступ к набору результатов из нескольких запросов. скажем, 3 вопроса.

1) Ошибка в то время как оператор И подобная ошибка в mysqli_free_result заявлении

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given on line 352 

Запрос некоторую помощь:

public function multi_select_query($query) 
{ 
    $i = 0; 
    $row = array(); 
    $query = $this->link->multi_query($query); 

    if (mysqli_error($this->link)) { 
     $this->log_db_errors(mysqli_error($this->link), $query, 'Fatal'); 
     return false; 
    } else {     
     do {  
      $i ++; 
      $result[$i] = mysqli_store_result($this->link); 

      while ($r = mysqli_fetch_array($query, MYSQLI_ASSOC)) { 
       $row[$i][] = $r; 
      } 

      mysqli_free_result($query);          

     } while ($this->link->more_results() && $this->link->next_result()); 

     return $row[$i]; 
    } 
} 
+2

Остановить смешивание ОО и процедурных версий mysqli. –

+0

'mysqli_fetch_array ($ query, MYSQLI_ASSOC)' - $ query - это 'bool', потому что это то, что возвращается из multi_query() - http://php.net/manual/en/mysqli.multi-query.php –

+0

@ u_mulder - Как я уже сказал, это моя первая попытка, и я попытался использовать существующую настройку для выполнения желаемого. –

ответ

0

Наконец, я сделал это сам каким-то образом.

Ниже приведен последний пример рабочего класса, к которому можно легко получить доступ через цикл foreach, используя следующую инструкцию.

$ result = $ dbc-> multi_select_query ($ query);

public function multi_select_query($query) 
{ 
    $row = array(); 
    $i = 0;    

    $query = $this->link->multi_query($query); 
    if(mysqli_error($this->link)){ 
     $this->log_db_errors(mysqli_error($this->link), $query, 'Fatal'); 
     return false; 
    } else {  
     do{      
      $i ++; 
      if($result[$i] = $this->link->store_result()) 
      { 
       while ($r[$i] = $result[$i]->fetch_row()) 
       { 
        $row[$i][] = $r[$i]; 
       } 
       $result[$i]->free();          
      }         

     } while($this->link->more_results() && $this->link->next_result()); 

     return $row; 
    } 
} 
Смежные вопросы