MySQL split in Abfrage
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
arbeiten
bekommen
beschriftung
code
dank
ergebnis
feld
gespeicherte string
getrennt code
http
nachlesen
nehmen
richtige ausdruck
spalte
spalten
tabelle
testen
variable einsetzen
zahl
-
Hi
Ich habe ein Problem.
In einer Spalte (ids) speicher ich Zahlen durch ';' getrennt
1;3;2;4
Ich möchte nun eine Abfrage machen, undzwar ungefähr so:
$abfrage = "SELECT * FROM tabelle WHERE is '3' in split(';', ids) "; $ergebnis = mysql_query($abfrage); ($row = mysql_fetch_object($ergebnis); [...]
Wie muss ich das anstellen?
Ich habe leider keine Ahnung wie ich das machen soll.
MFG
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
nein.
Das sind nicht die Ids der spalte.
Es gibt ein feld mit id was die id des eintrags enthält.
Und ein Feld mit der Beschriftung Ids was mehrere Zahlen durch ; getrennt enthält.
Und ich muss nun meine Abfrage nach einem dieser Zahlen ausrichten. -
Wie wäre es mit regulären Ausdrücken?
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
das sollte der richtige Ausdruck sein:
SELECT '2;4;53' REGEXP '[^0-9]3[^0-9]|[^0-9]3$|^3[^0-9]';
Wenn nicht mit einer Referenztabelle arbeiten.
Beitrag zuletzt geändert: 18.3.2011 11:23:10 von sneppa -
programtools schrieb:
danke, ich hoffte das es sowas gibt :)
Nur irgendwie verstehe ich das nicht ganz. Was muss ich jetzt nehmen um wine von den Zahlen zu bekommen ?!
Vielen Dank & MFG
eben editiert:
sneppa schrieb:
das sollte der richtige Ausdruck sein:
SELECT '2;4;53' REGEXP '[^0-9]3[^0-9]|[^0-9]3$|^3[^0-9]';
Einfacher wäre wohl:
SELECT '2;4;53' REGEXP ';3;|;3$|^3;';
Beitrag zuletzt geändert: 18.3.2011 11:25:16 von sneppa -
Vielen Dank, aber
was bedeutet jetzt genua was?
Angenommen der gespeicherte String in 'ids' ist '1;3;5;9'
ich möchte alle Spalten auswählen, in denen $variavle in 'ids' vorkommt.
-
Na was das bedeutet kannst du ja in der Doku nachlesen:
http://dev.mysql.com/doc/refman/5.1/en/regexp.html
SELECT '2;4;53' REGEXP ';3;|;3$|^3;';
Dabei kommt 0 oder 1 heraus; 1 gefunden - 0 nicht.
SELECT feld1, feld2, feld3, ids REGEXP ';3;|;3$|^3;' AS found FROM tabelle WHERE found = 1
(Ohne es zu testen)
Beitrag zuletzt geändert: 18.3.2011 11:59:25 von sneppa -
DAnke, aber ich meine ich suche ja nach einer Zahl die in $variable steht.
Wo muss ich jetzt das $variable einsetzen? Php muss doch wissen was es suchen soll. -
programtools schrieb:
Ich möchte nun eine Abfrage machen, undzwar ungefähr so:
$abfrage = "SELECT * FROM tabelle WHERE is '3' in split(';', ids) "; $ergebnis = mysql_query($abfrage); ($row = mysql_fetch_object($ergebnis); [...]
Du hast doch im Beispiel die 3 genannt?
sneppa schrieb:
SELECT feld1, feld2, feld3, ids REGEXP ';3;|;3$|^3;' AS found FROM tabelle WHERE found = 1
(Ohne es zu testen)
Dann würde ich glatt die 3 durch die Variable ersetzen ;) -
Oh ja...
tut mir leid :)
Das hatte ich schon wieder ganz vergessen :D
Vielen Dank für deine Mühe und die gute Hilfe :)
Grüße
Leider klappt es nicht so ganz.
Ich bekomme folgenden Fehler:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource
Mein Code sieht so aus:
$abfrage_sm = " SELECT menu_id, superior_menu REGEXP ';".$menu_id.";|;".$menu_id."$|^".$menu_id.";' AS found FROM minis_menus WHERE found = 1"; $ergebnis_sm = mysql_query($abfrage_sm); while($row_sm = mysql_fetch_object($ergebnis_sm)){ $submenus = $submenus.$row_sm->menu_id.";"; } echo "-submenus->".$submenus;
in superior_menu steht der string zb. 1;3;4
in $menu_id ist die gesuchte Zahl zb. 3
Was mache ich da falsch?
Beitrag zuletzt geändert: 18.3.2011 12:30:12 von programtools -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage