MySQL mit array
XzenTorXz
- datenbank
Hi,
Ich hab eine MySQL Datenbank. In einer PHP Datei werden ca. 100 Datenabgefragt und in eine array gespeichert. Da ich nicht wollte das die Datenbank über 100 Spalten hat, wollte ich fragen ob man nicht die gesamte array in ein Feld speichern kann.
pls help
hi,
Ich hab eine MySQL Datenbank. In einer PHP Datei werden ca. 100 Datenabgefragt und in eine array gespeichert. Da ich nicht wollte das die Datenbank über 100 Spalten hat, wollte ich fragen ob man nicht die gesamte array in ein Feld speichern kann.
klar kann man, sieh dir http://www.php.net/manual/de/function.serialize.php an, damit kannst du ein array in einen textstring umwandeln. mit unserialize() geht's dann logischer weise wieder zurück, vom string in ein array.
allerdings solltest du vielleicht vorher erst noch mal deine datenstruktur überdenken, klingt nämlich ein wenig seltsam, deine anforderung.
gruss,
wahsaga
yo,
es hängt zum grossen teil davon ab, wie die über 100 datenfelder pro datensatz weiter verarbeitet werden. schließlich sammelt man solche datenmengen ja nicht zum spass. willst du einzelne datenfelder suchen und verändern können, dann würde ich davon abraten sie zusammenzufassen. wenn es sich nur um eine "archiv-speicherung" handelt, die nur selten abgerufen und verändert werden, dann bietet sich eine solche zusammenfassung an.
Ilja
Hello Nobi,
Ich hab eine MySQL Datenbank. In einer PHP Datei werden ca. 100 Datenabgefragt und in eine array gespeichert. Da ich nicht wollte das die Datenbank über 100 Spalten hat, wollte ich fragen ob man nicht die gesamte array in ein Feld speichern kann.
Die Datenbank hat Tabellen
Die Tabellen haben Spalten
Wenn nicht in jeder Abfrage alle Felder belegt werden, dann kann (ggf. muss) man die Tabellenstruktur normalisieren. Das bedeutet eine "Drehung um 90°": aus Feldern (horinzontale Achse) werden Datensätze (vertikale Achse).
Wenn die Daten alle nur direkt voneinader abhängig sind und man nicht über einzelne Felder (Spalten) der Tabellen sortieren und filtern muss, dann kann man selbstverständlich die Datenblöcke auch als geschlossene Einheiten in einem Feld der Datenbank ablegen.
Du hast ja schon gehört, dass dazu serialize() benutzt werden kann. Allerdings muss man den Stream dann noch irgendwie bearbeiten. Es könne ja auch MySQL-Steuerzeichen (Doppelhäkchen, Häkchen, ...) enthalten sein. Die muss man maskieren, damit sie sauber durch die Schnittstelle zur DB laufen. Die DB selber entfernt diese Maskierungen dann wieder. Sie werden also nicht mit abgespeichert. I.d.R. sollte die Funktion mysql_escape_string() das Gewünschte leisten.
Liebe Grüße aus http://www.braunschweig.de
Tom