serialisierter Wert in mysql mit Variable gleich
xpfreund
- php
Hallo,
also ich habe eine Variable $user_kurz in der eine Zeichenkette gespeichert ist, z. B. $user_kurz="ich".
In der Tabelle "projekte" steht bei "personen" der serialisierte Wert sämtlicher vorhandener Namen, also "a:2:{i:0;s:3:"ich";i:1;s:4:"cool";}".
Während einer Select-Abfrage sollen nur die Datensätze ausgegeben werden, bei denen $user_kurz in "personen" enthalten ist.
Bsp.:
$user_kurz="ich";
Tabelle projekte
name | personen
projekt1 | a:2:{i:0;s:3:"ich";i:1;s:4:"cool";}
projekt2 | a:2:{i:0;s:3:"ein andere";i:1;s:4:"der nächste";}
Query für mysql
select name from projekte where $user_kurz ist in personen
Ausgabe:
projekt1
Wie müsste ich die where Bedingung formulieren?
gruß aus Senftenberg am See
hi,
In der Tabelle "projekte" steht bei "personen" der serialisierte Wert sämtlicher vorhandener Namen, also "a:2:{i:0;s:3:"ich";i:1;s:4:"cool";}".
Warum?
Dass sowas in aller Regel absolut kein vernünftiges Datenmodell darstellt, hättest du doch beim Mitlesen hier auch schon langsam mal mitbekommen können.
projekt1 | a:2:{i:0;s:3:"ich";i:1;s:4:"cool";}
projekt2 | a:2:{i:0;s:3:"ein andere";i:1;s:4:"der nächste";}Wie müsste ich die where Bedingung formulieren?
Wenn du lediglich nach Teilzeichenketten suchen willst, kannst du LIKE nebst Platzhaltersymbolen nutzen. (Wenigstens das sollte doch inzwischen bekannt sein ...?)
Bei der gezeigten Datenkostellation kann man wohl darauf verzichten, auch noch Anführungszeichen um den Wert herum zu verlangen o.ä.
Aber wie gesagt, gut sieht ganz anders aus.
gruß,
wahsaga
Hello,
Aber wie gesagt, gut sieht ganz anders aus.
ACK! Vor allem freu ich mich auf den Tag, wo man seitens PHP Entwicklern aus irgend einem Grund beschließt die Serialisierung von Arrays fortan nicht mehr in so schön lesbarer Form zu machen, sondern zu komprimieren oder keine Ahnung was einem sonst einfallen könnte.
MfG
Rouven
Hallo,
hi,
In der Tabelle "projekte" steht bei "personen" der serialisierte Wert sämtlicher vorhandener Namen, also "a:2:{i:0;s:3:"ich";i:1;s:4:"cool";}".
Warum?
Dass sowas in aller Regel absolut kein vernünftiges Datenmodell darstellt, hättest du doch beim Mitlesen hier auch schon langsam mal mitbekommen können.
Habe ich. Aber dann müsste ich das gesamte Programm umschreiben, um sämtliche Befehle zu entfernen, die die Serialisierung hervorrufen. Da es nicht meins ist, aber sehr groß, da könnte ich das zwar theoretisch machen praktisch fehlt mir aber leider die Zeit.
Wenn du lediglich nach Teilzeichenketten suchen willst, kannst du LIKE nebst Platzhaltersymbolen nutzen. (Wenigstens das sollte doch inzwischen bekannt sein ...?)
Stimmt schon. Ich dachte nur vielleicht kann man den Wert ja während der Abfrage unserialisieren und dann auswerten. Aber so gehts sicher auch.
gruß aus Senftenberg am See