2016-08-15 7 views
1

このクラスの作成者のブログでもこの質問はどこにも尋ねられていないと確信しています。mysqli_multi_queryデータベースクラスエラー

朝私はbennettstoneというPHPデータベースクラスを使い始めました。私はこのクラスにMYSQLI_MULTI_QUERYを追加して、一度に複数のクエリを処理しようとしていました。

今まで、私は以下の程度まで修正することができました。しかし、それは動作していません。私はクラスで非常に貧しいです&これはこれまで私の最初の試みです!

2行でエラーが表示されます&複数のクエリの結果セットにどのようにアクセスするのか分かりません。 3つのクエリを考えてみましょう。 mysqli_free_result声明でしばらくの文と同様のエラーで

1)エラー

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

OOと手続き型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; 
    } 
} 
関連する問題