Jonny 5: mysqli_multi_query Abfrage mit while Schleife

Beitrag lesen

Hallo Jörg,

$eingabe_id  = mysqli_real_escape_string($db,$_POST['id']);
$query = "SELECT user, email FROM tabelle WHERE id = '".$eingabe_id."';";
$query .= "SELECT trip, ort FROM tabelle2 WHERE id = '".$eingabe_id."';";
$result = mysqli_multi_query($db,$select);

  

> Nun kann das erste Statement nur ein Ergebnis liefern. Das zweite Statement kann mehrere Ergebnisse liefern und muss daher in einer Schleife ausgegeben werden.  
  
Das ganze funktioniert bei [multi queries etwas anders](http://www.php.net/manual/de/mysqli.multi-query.php). Um ein oder mehrere Ergebnisse zu bekommen, verwende [mysqli_use_result()](http://www.php.net/manual/de/mysqli.use-result.php) oder [mysqli_store_result()](http://www.php.net/manual/de/mysqli.store-result.php).  
  
Ich setze für gewöhnlich einen Identifikator für queries, um dann im result zu wissen, um welche query es sich genau handelt, falls die Spaltennamen ähnlich sind. Z.b... SELECT '1' qtype... In deinem Beispiel nicht nötig, da du ja unterschiedliche Spalten-Namen hast.  
  
~~~php
  
if(mysqli_multi_query($db, $query))  
{  
  do{  
    if($result = mysqli_use_result($db))  
    {  
      while($row = mysqli_fetch_assoc($result))  
      {  
        var_dump($row);  
      } mysqli_free_result($result);  
    }  
  } while(mysqli_next_result($db));  
}  

Man kann durch die Verwendung von multi queries die Kommunikation zwischen PHP und MySql-Server reduzieren, verwende es recht häufig in meinen Projekten. Ob es in deinem Fall Sinn macht, sei dir überlassen, so sollte es jedenfalls funkionieren.

Viel Erfolg,
Jonny 5