MarkoS: Array in MySQL schreiben

Hallo Leute,

ich möchte ein Array mit etwa dieser Struktur:

Array  
(  
    [NAME] => Hxxxxxx  
    [VORNAME] => Rxxxxx  
    [TEL] => 01xxxxxxxxx  
    [STRASSE] => Wallstr.  
    [ORT] => Berlin  
 ...  
}

in eine Tabelle schreiben:

kontakte_tbl  
---------------  
id       |  
name     |  
titel    |  
vorname  |  
tel      |  
...

Problem dabei ist, dass o.g. Array immer völlig anders ausehen kann (weil dynamisch von Fremdprogramm erstellt - kein Eintrag = kein <Tag>).

Wie gehe ich am besten vor?

Marko

  1. Hallo Marko!

    Problem dabei ist, dass o.g. Array immer völlig anders ausehen kann (weil dynamisch von Fremdprogramm erstellt - kein Eintrag = kein <Tag>).
    Wie gehe ich am besten vor?

    Ich würde die fehlenden Einträge hinzufügen und mit default-Werten belegen oder halt mit leeren Strings ''.

    Das ganze wird dann als vollständiges Statement in die DB geschrieben. Mit den leeren Werten.
    Vergiss bitte nicht den Kontextwechsel zur Datenbank.

    Grüße, Matze

  2. Hi,

    ich möchte ein Array mit etwa dieser Struktur:

    Array

    (
        [NAME] => Hxxxxxx
        [VORNAME] => Rxxxxx
        [TEL] => 01xxxxxxxxx
        [STRASSE] => Wallstr.
        [ORT] => Berlin
    ...
    }

    
    >   
    > in eine Tabelle schreiben:  
    >   
    > ~~~xml
    
    kontakte_tbl  
    
    > ---------------  
    > id       |  
    > name     |  
    > titel    |  
    > vorname  |  
    > tel      |  
    > ...
    
    

    Ich nehme an, das sollen Spalten sein, und keine Zeilen?

    Problem dabei ist, dass o.g. Array immer völlig anders ausehen kann (weil dynamisch von Fremdprogramm erstellt - kein Eintrag = kein <Tag>).

    Wie gehe ich am besten vor?

    Versuche, auf die Array-Elemente mit dem Index zuzugreifen, den du erwartest.
    Wenn ein Wert vorliegt, übernimmst du diesen in dein INSERT-Statement, andernfalls einen Leerstring bzw. den jeweiligen 0- oder NULL-Wert für den Spaltentyp; oder du nimmst du entsprechende Spalte dann gar nicht ins Statement auf (sofern das Datendesign das zulässt).

    MfG ChrisB

    --
    “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
    1. Versuche, auf die Array-Elemente mit dem Index zuzugreifen, den du erwartest.
      Wenn ein Wert vorliegt, übernimmst du diesen in dein INSERT-Statement, andernfalls einen Leerstring bzw. den jeweiligen 0- oder NULL-Wert für den Spaltentyp; oder du nimmst du entsprechende Spalte dann gar nicht ins Statement auf (sofern das Datendesign das zulässt).

      MfG ChrisB

      Hm, wie mache ich das denn am besten? Die Tabelle hat recht viele Spalten (bis 350, Jaja, ich muß meine DB-Struktur überdenken ;)). Die möchte ich ja nicht alle einzeln abklopfen, ob im "xml-Array" die Indizes vorhanden sind.

      1. Hm, wie mache ich das denn am besten? Die Tabelle hat recht viele Spalten (bis 350, Jaja, ich muß meine DB-Struktur überdenken ;)). Die möchte ich ja nicht alle einzeln abklopfen, ob im "xml-Array" die Indizes vorhanden sind.

        Du solltest deine Struktur vllt. jetzt gleich ändern? Du arbeitest ja schließlich sowieso gerade daran.

        Eine Lösung für dich wäre:

        http://www.php.net/manual/en/function.array-diff.php
        und
        http://www.php.net/manual/en/function.array-combine.php

        Grüße, Matze

  3. Hello,

    Problem dabei ist, dass o.g. Array immer völlig anders ausehen kann

    Wieviele Datensätze derselben Struktur werden denn angelegt?
    Wenn es nur einer ist, lohnt sich ja keine relationale Datenbank / -Tabelle dafür.

    (weil dynamisch von Fremdprogramm erstellt - kein Eintrag = kein <Tag>).

    Das verstehe ich jetzt nicht. Was bedeutet: kein Eintrag = kein <Tag>?

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hello,

      Problem dabei ist, dass o.g. Array immer völlig anders ausehen kann

      Wieviele Datensätze derselben Struktur werden denn angelegt?
      Wenn es nur einer ist, lohnt sich ja keine relationale Datenbank / -Tabelle dafür.

      Nein, es werden viele Datensätze angelegt. Nur beim XML parsen kriege ich oben beschriebenes Array.

      (weil dynamisch von Fremdprogramm erstellt - kein Eintrag = kein <Tag>).

      Das verstehe ich jetzt nicht. Was bedeutet: kein Eintrag = kein <Tag>?

      Das Array kann abhängig von der XML-Datei unterschiedlich aussehen: Also mal gibt es <TELEFON>0123</TELEFON> und mal eben nicht.