Daten von MySQL Array in normalen Array übermitteln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Daten von MySQL Array in normalen Array übermitteln

    Hallo,
    ich hole mir mit Hilfe von:

    Quellcode

    1. $sqlbefehl = "SELECT * FROM datenbanktabelle";
    2. $antwort = mysql_query($sqlbefehl);

    und

    Quellcode

    1. while ($zeile = mysql_fetch_array($antwort)) {
    2. echo ($zeile[ID]." - ".$zeile[vorname]." - ".$zeile[nachname]);
    3. }

    den Inhalt aus meiner Datenbanktabelle raus.
    Nun möchte ich das Objektorientierter machen und das nur im Backend mit mysql_fetch_array machen und in den einzelnen Dateien (mit Hilfe einer Funktion) mit einen normalen Array, damit man wenn man z.B. das Datenbanksystem ändert nicht jede einzelne Datei ändern muss.
    Also muss ich irgendwie die Daten aus den MySQL-Array in den normalen Array rüberkriegen, bloss da hänge ich grade und weiß nicht wie ich das richtig umsetzen kann.

    Ich müsste also in der while Schleife Zeile für Zeile in den neuen Array übergeben. Aber man müsste einen geschachtelten Array nutzen damit nicht jede Zeile einfach hinten dran gepackt wird. Ist das korrekt?

    Bsp:

    Quellcode

    1. $normarraygesamt = array();
    2. while ($zeile = mysql_fetch_array($antwort)) {
    3. array_push($normarraygesamt, $normarayzeile = array ($zeile[ID], $zeile[vorname],$zeile[nachname]));
    4. }

    Aber da ist irgendwie noch der Wurm drin.

    Falls meine Überlegungen komplett falsch sind, bitte mich einmal aufklären und eine andere Möglichkeit nennen, evtl. mit Beispiel, da ich nicht so schnell alles "checke". ;)

    Danke und Gruß
  • Dann konzentriere ich mich mal darauf dir ein alternatives Beispiel zu nennen die Datenbank zu abstrahieren
    Siehe das Beispiel zur Datenbankabstraktion: [wiki]Einführung in PDO[/wiki]

    Außerdem könntest du dir das Konzept von Models anschauen.
    So habe ich in meinen Projekten für jeden "Typ" eine "Klasse" den ich einmal mit dem Primärschlüssel und einmal mit fertigen Daten befüllen kann.

    Quellcode

    1. class User extends DatabaseObject {
    2. /**
    3. * user
    4. * $userid OR $row for construction
    5. */
    6. public function __construct($userid = null, $row = array()) {
    7. if($userid !== null) {
    8. $sql = 'SELECT *
    9. FROM user
    10. WHERE user.userid = :userid
    11. LIMIT 1';
    12. $stmt = MyDB::get('read')->prepare($sql);
    13. $stmt->execute(array(
    14. ':userid' => $userid
    15. ));
    16. $row = $stmt->fetch();
    17. }
    18. parent::__construct($row);
    19. }
    20. /**
    21. * initiate without db query (used for helper methods which only need a userid)
    22. */
    23. public static function get($userid) {
    24. return new self(null, array(
    25. 'userid' => $userid
    26. ));
    27. }
    28. }
    Alles anzeigen


    Databaseobject ist in dem Falle nicht so wichtig.

    Quellcode

    1. class DatabaseObject {
    2. protected $data;
    3. public function __construct($row) {
    4. $this->data = $row;
    5. }
    6. }