Martin(1): Select Ausgabe in Array schreiben

$sql =  "select a,b,c from tabele ORDER BY a ASC";

$result = mysql_query($sql)or die($sql.'<br>'.mysql_error());

while ($sql = mysql_fetch_array($result))
{
$mein_array[] = $sql['a'];
$mein_array[] = $sql['b'];
}

die Ausgabe ist:

1 a
2 b
3 a
4 b

u.s.w.

es soll aber eigentlich dieses rauskommen

1 a,b,c
2 a,b,c
3 a,b,c

u.s.w

  1. Tach!

    while ($sql = mysql_fetch_array($result))
    {
    $mein_array[] = $sql['a'];
    $mein_array[] = $sql['b'];
    }
    es soll aber eigentlich dieses rauskommen
    1 a,b,c
    2 a,b,c
    3 a,b,c

    Dann solltest du nicht jeden Wert aus der Ergebniszeile einzeln einem neuen Array-Eintrag zuweisen, sondern die Zeile komplett.

    Besser wäre es aber, die mysqli-Extension statt der bereits als deprectaded angekündigten mysql-Extension zu verwenden, dann bekommst du das Ergebnis gleich mit einem einzigen mysqli_fetch_all()-Aufruf.

    dedlfix.

    1. ich möchte mein Ziel aber ohne mysqli ereichen.

      1. ich möchte mein Ziel aber ohne mysqli ereichen.

          
        # logisch_falsch  
        while ($sql = mysql_fetch_array($result))  
        {  
        $mein_array[] = $sql['a'];  
        $mein_array[] = $sql['b'];  
        }  
        
        

        Das ist falsch, weil Du jedes mal ein neues Element anlegst und den Zeiger im Array versetzt (arFoo[]='bar'):

        besser:

          
        $mein_array=array();  
        while ($hash = mysql_fetch_array($result))  
        {  
           $mein_array[] = $hash;  
        }  
        
        

        noch besser:

          
        $mein_array=array();  
        while ($mein_array[] = mysql_fetch_array($result)) {#}  
        
        

        danach hast Du einen "Array über Hashes", der sich auch folgt erzeugen ließe:

          
        $mein_array=array();  
        $mein_array[0]['a']='erster Wert';  
        $mein_array[0]['b']='zweiter Wert';  
        $mein_array[1]['a']='dritter Wert';  
        $mein_array[1]['b']='vierter Wert';  
        # ...  
        
        

        Um den wieder zu befragen:

          
        foreach ($mein_array as $row)  {  
           echo $row['a'];  
           echo $row['b'];  
        }  
        
        

        Jörg Reinholz

        1. noch besser:

          $mein_array=array();
          while ($mein_array[] = mysql_fetch_array($result)) {#}

            
          Dann ist aber das letzte Element `false`{:.language-php}  
            
          
          > Um den wieder zu befragen:  
          > ~~~php
            
          
          > foreach ($mein_array as $row)  {  
          >    echo $row['a'];  
          >    echo $row['b'];  
          > }  
          > 
          
          

          Und würde hier meckern.

          MfG
          bubble

          --
          If "god" had intended us to drink beer, he would have given us stomachs. - David Daye
          1. Dann ist aber das letzte Element false

            Stimmt. Im Handbuch steht irgendwo, dieses sei vor der Weiterverarbeitung mit unset zu löschen.

            Jörg Reinholz

      2. ich möchte mein Ziel aber ohne mysqli ereichen.

        "Ich will aber..." - du könntest meine Frau sein.
        Vielleicht bist du es ja? - Schatz heute Abend bitte etwas vegetarisches!

        Gruß
        dein Mann
        T-Rex