mysqli Assozatives Array befüllen

Dolphon

Erfahrenes Mitglied
Hallo,

in einer älteren Anwendung, welche mittels ODBC die Daten aus der Datenbank holt, habe ich folgenden Code genutzt um mein Array zu befüllen.

PHP:
//Create the array:
		while (odbc_fetch_row($result))
		{
			$row = array();
			for ($i = 1; $i <= odbc_num_fields($result); $i++)
			{
				$field_name = odbc_field_name($result, $i);
				$row[$field_name] = odbc_result($result, $field_name);
			}
			array_push($this->a_autos,$row);
		}

Wie kann ich dasselbe in mysqli realisieren. Ich habe keine vergleichbare Funktion für "odbc_field_name" gefunden.

Gruß

Dolphon
 
Danke für deine Antwort.
Leider ist noch in meinem Code der Wurm drin.
Er springt leider nur beim ersten Datensatz in die 2. While-Schleife.
Folglich erhalte ich nur den ersten Datensatz und alle weiteren sind leer.
Beispiel von print_r mit 3 Satensätzen in der Tabelle:

Code:
Array ( 
[0] => Array ( [id] => 1 [name] => Bingo der große [beschreibung] => dfasdfasdf [cover] => 025.jpg [erschienen] => 1300057200 [anzahl_episoden] => 33 [vorhanden_episoden] => 2 [complete] => 0 [typ] => TV Serie ) 
[1] => Array ( ) 
[2] => Array ( ) )

PHP:
while($row = $result->fetch_assoc())


			{
				$row2 = array();
				$count = 0;
				while ($field_info = $result->fetch_field()) {

					$row2[$field_info->name] = $row[$field_info->name];
					echo $count."<br/>";
					$count++;
				}
				array_push($this->a_anime,$row2);
			}
 
Ich abreite selber nicht mit mysqli.
Du solltest die fields eh nur einmal auslesen und am besten in ein Array schreiben. Keine Ahnung ob das folgende geht

PHP:
while ($field_info = $result->fetch_field()) {
    $fieldNames[] = $row[$field_info->name];
}
while($row = $result->fetch_assoc()) {
    $row2 = array();
    foreach($fieldNames as $fieldName) {
        $row2[$fieldName] = $row[$fieldName];
    }
    $this->a_anime[] =$row2;
}
 
Hier die Lösung.
So funktioniert es:

PHP:
//Feldnamen ermitteln
			$a_fieldname = array();
			while ($field_info = $result->fetch_field()) {

				$a_fieldname[] = $field_info->name;
			}
			
			//Array befüllen
			while($row = $result->fetch_assoc())
			{	
				$row2 = array();
				foreach ($a_fieldname as $value)
				{
					$row2[$value]=$row[$value];
				}
			
				array_push($this->a_anime,$row2);
			}
 
Zurück