Autor |
Nachricht |
Raumwurm
Threadersteller
Dabei seit: 21.12.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 18.09.2007 11:58
Titel [mysql/php] array speichern |
|
|
Hallo miteinander,
angenommen ich will ein Array in eine Datenbankfeld
(mySql) speichern und diesen Wert später mit LIKE
'%blub%' wiederfinden können.
Eine Möglichkeit wäre es das Array in einen komma-
sparierten String (implode/explode) abzuspeichern.
Blöd in dem Fall ist nur, dass das LIKE '%blub%' dann
auch Teilmengen findet.
Andere Möglichkeit wäre es noch, das Array serialized
reinzutun. Das scheint noch die beste Variante zu sein.
Woanders las ich aber gerade, das es grundsätzlich nicht
zweckmäßig wäre Arrays überhaupt in ein Feld zu
speichern, von wegen Normalisierung -> nicht das ich
das verstanden hätte...
Gibts noch andere Möglichkeiten bzw. welcher Weg ist
denn nun richtig?
|
|
|
|
|
Pixelpole
Dabei seit: 25.10.2004
Ort: Trier
Alter: 37
Geschlecht:
|
Verfasst Di 18.09.2007 12:24
Titel
|
|
|
grundsätzlich wäre es ganz gut zu wissen was du überhaupt vorhast...wieso du unbedingt ein array in ein feld speichern musst un die werte nicht einfach in einer anderen tabelle speicherst und über den primärschlüssel mit dem datensatz verbindest.
|
|
|
|
|
Anzeige
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 18.09.2007 12:32
Titel
|
|
|
Mehrwertige Felder gibts in mysql nicht, da müsstest du schon ne objektrelationale datenbank benutzen, die feldtypen wie set oder array unterstützen.
du kannst das aber simulieren, indem du dein array in eine zweite relation auslagerst.
|
|
|
|
|
Raumwurm
Threadersteller
Dabei seit: 21.12.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 18.09.2007 12:50
Titel
|
|
|
Also ich habe mehrere Einträge nach diesem Schema:
Code: |
tabelle eintrag
id | name | rubrik
---+-----------+-------
1 | wunderbar | 1,20,11
2 | herrlich | 34,101
3 | saubaer | 5 |
Die Werte in ein andere Tabelle zu schreiben, hatte
ich anfangs vor, nur hatte ich dann irgendwann
einfach einen Knoten im Kopf und wollte es mir
dann einfacher machen.
...den primärschlüssel mit dem datensatz verbinden...
dann bräuchte ich quasi zwei querys, einmal die
suche in einer rubrik-tabelle und dann einen zweiten
der mir die einträge rausholt. so meinst?
...die feldtypen wie set oder array unterstützen.
also set hätte ich da zur Verfügung - nur las ich dass
dieser Typ auf 64 Einträge limitiert wäre (wenn ich
das richtig verstanden habe).
... indem du dein array in eine zweite relation auslagerst
damit ist das gemeint, wovon auch pixelpole spricht?
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Di 18.09.2007 13:09
Titel
|
|
|
du machst einfach drei tabllen.
1.) rubriken, da stehen deine rubriken, mit den schlüssen 1-n
2.) die 1:n tabelle "name" => "rubrik",
da steht dann drin
Code: |
personenId rubrikId
1 1
1 20
1 11
2 34
2 101
3 5 |
sozusagen das "der index"
3.) die tabelle mit den namen der personen oder was auch immer wunderbar, herrlich, saubaer sein soll
1 wunderbar
2 herrlich
3 saubaer
etc.
query sieht dann in etwa so aus:
SELECT p.name, r.titel FROM personen AS p
INNER JOIN personen_rubriken AS pr ON
pr.personenId = p.id
INNER JOIN rubriken AS r ON
r.id = pr.rubrikId
wie gesagt, "in etwa"
|
|
|
|
|
Raumwurm
Threadersteller
Dabei seit: 21.12.2004
Ort: -
Alter: -
Geschlecht:
|
Verfasst Di 18.09.2007 13:33
Titel
|
|
|
SELECT p.name, r.titel FROM personen AS p
INNER JOIN personen_rubriken AS pr ON
pr.personenId = p.id
INNER JOIN rubriken AS r ON
r.id = pr.rubrikId
Ja, das könnte Sinn machen - so auf den 10ten Blick.
Danke
|
|
|
|
|
|
|
|
Ähnliche Themen |
Fieses PHP/MySQL-Skript gibt nur "Array Array Array..." aus
[php/mysql] daten aus DB rausholen, und in zufalls-array
strip_tags() in Array speichern
[PHP, MySQL] Fließkommazahlen speichern - how to?
Javascript in Mysql DB speichern
daten von Oracle DB in MySql speichern
|
|