Array in MySQL schreiben
MarkoS
- php
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
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
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
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.
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
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
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.