2009-07-05 9 views
1

Unten ist mein Code für die Funktion, die ich verwende, um mehrere Daten aus meiner Tabelle abzurufen, aber ich würde gerne bind_result ($ array [0], ..., ..) automatisch abhängig von der Anzahl der Felder generiert werden Ich wähle in der Abfrage aus.PHP und MYSQLi - Parameter über Schleifen binden und im Array speichern?

zum Beispiel ..

$query=select a,b,c,d,e from table;//selecting 5 fields 
...... 
$stmt->execute();$stmt->bind_result($retrieve[0],$retrieve[1],$retrieve[2],$retrieve[3],$retrieve[4]); 

(die bind_result für 5 Werte automatisch generiert werden soll) Hilfe ... geschätzt wird Dank

$query="SELECT comment, userid,UNIX_TIMESTAMP(dtime) 
       FROM comment_updates 
       WHERE updateid=46546 
       ORDER BY dtime DESC 
       LIMIT 10 "; 
     if($stmt = $this->conn->prepare($query)) { 
      $stmt->execute(); 
      $stmt->bind_result($comments[0],$comments[1],$comments[2]); 
      $i=0; 
      while($stmt->fetch()){ 
      $i++; 
      $name='t'.$i; 
      $$name = array($comments[0],$comments[1],$comments[2]); 
      } 
      return array($i,$t1,$t2,$t3,$t4,$t5,$t6,$t7,$t8,$t9,$t10); 
      $stmt->close(); 
     } 

Antwort

1

Dies sollte Ihnen den Einstieg:

http://php.net/manual/en/mysqli-stmt.result-metadata.php

Dadurch erhalten Sie die Anzahl der Felder in Ihrem Resultset über mysqli_num_fields().

Dies sollte die Größe Ihres $retrieve Arrays sein.

Da bind_result kein Array als Argument nehmen, müssen Sie call_user_func_array verwenden, um dies zu erreichen:

call_user_func_array(array($stmt, 'bind_result'), $retrieve_references); 

$retrieve_references sollte ein Array von Verweisen auf die Elemente in $retrieve sein. Die Verwendung von $retrieve selbst in call_user_func_array löst einen Fehler aus.