Neuigkeiten:

still alive...

Hauptmenü

db.inc.php: Anmerkung zur fetch_array-Funktion

Begonnen von k00ni, 17. August 2008, 17:49:03

Vorheriges Thema - Nächstes Thema

k00ni

Erstmal hier die Funktion:
 

query($query) ) {
           $rows=0;
         while ( $row = @mysql_fetch_array($this->result) ) {
            $result[$rows]=$row;
            $rows++;
         }
         return $result;
} else {
  return false;
       }
   }
?>

 
 
Habe eine ähnliche Funktion in Gebrauch und möchte nochmal was dazu schreiben. Da hier kein Modus für mysql_fetch_array angegeben wird, legt er sowohl einen nummerischen Index, als auch einen assoziativen an.
Was das heißt? Hier mal ein Beispiel:
 

 id | name
1    foo
2    bar

 
 
Frage ich diese Tabelle mittels
 

SELECT id FROM xyz;

 
 
ab, so bekomme ich folgendes Array:
Array
-
  • = 1
- [\'id\'] = 1
- [1] = 2
- [\'id\'] = 2
Man hat statt der gewünschten 2 Einträge (wie\'s laut Tabelle sein soll), nun 4 Einträge.
Holt man sich also mit dieser Funktion ein Array aus einer Abfrage, so muss man aufpassen, wie man die Einträge \"anspricht\", ob nun per Nummer oder String. Ich selbst würde hier gern noch einen Typ angeben können: MYSQL_NUM, MYSQL_ASSOC oder (als default eingestellt) MYSQL_BOTH.
Dies verringert nicht nur den Speicherverbrauch, da nun jedes Element nur einmal vorkommt, sondern man vermeidet später eventuelle Problem.
Ich selbst hatte nämlich gerade mittels
 

{html_options values=$A_pass_type_ids output=$A_pass_type_names selected=$I_type}

 
 
eine Liste von Typen darstellen wollen (id und name) und er zeigte mir alles 2 mal an.

all your base are belong to us