Alt 20.09.2011, 15:49:10   #1 (permalink)
---???---
Benutzerbild von djjlx

ID: 62937
Lose-Remote

djjlx eine Nachricht über ICQ schicken
Reg: 09.05.2006
Beiträge: 579
djjlx sorgt für eine eindrucksvolle Atmosphäredjjlx sorgt für eine eindrucksvolle Atmosphäredjjlx sorgt für eine eindrucksvolle Atmosphäre
Standard Mehrere Werte in einer Abfrage suchen

Hallo!

Ich sitz jetzt schon seit 8 Uhr morgens an folgenden Problem.
Ich würde gerne mehrere feste IDs mit einer QUERY Abfrage abfragen.

Die einfachste Methode:
PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
$suchbegriff 100,156,236,458,469,15156,62578;

SELECT FROM `tableWHERE
`id` = 100
OR `id` = 156
OR `id` = 236
OR `id` = 458
OR `id` = 469
OR `id` = 15156
OR `id` = 62578 
Die Variable $suchbegriff wird dynamisch erzeugt.

Ich hab heute schon einges Probiert find aber keine lösung die wirklich diese IDs suchen.

Mit WHERE `id` IN ($suchbegriff) wird nur die erst gefundene Id ausgegeben.
Mit WHERE `id` REGEXP '($suchbegriff) wird zb. alle ID ausgegeben die eine 1 enthalten.

Gibt es da eine schönere Lösung oder ist es das beste jede ID mit OR abzufragen?

Gruss
djjlx
djjlx ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 20.09.2011, 16:10:42   #2 (permalink)
Erfahrener Benutzer

ID: 109565
Lose-Remote

Reg: 28.04.2006
Beiträge: 146
Moloc sorgt für eine eindrucksvolle AtmosphäreMoloc sorgt für eine eindrucksvolle AtmosphäreMoloc sorgt für eine eindrucksvolle Atmosphäre
Standard

Die Lösung mit IN sollte eigentlich schon funktionieren. (Was für Datentypen werden in der DB verwendet? Wie sieht die Query aus, welche an die DB geschickt wird?,...)

Erstmal schlage ich vor, dass du deinen "echten" PHP Code hier postest. Denn deine erste Zeile ergibt ja schon mal einen Parse-Error. Da kann man ansonsten nur raten, ob das ein String sein soll, oder ein Array, ... .
Moloc ist offline   Mit Zitat antworten
Alt 20.09.2011, 16:18:02   #3 (permalink)
Multitalent
Benutzerbild von joschilein

ID: 9301
Lose-Remote

joschilein eine Nachricht über ICQ schicken
Reg: 05.05.2006
Beiträge: 1.414
joschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehenjoschilein genießt hohes Ansehen
Standard

Dafür ist IN da und ich wüsste nicht warum das nicht funktionieren sollte. Wenn da nur ein Ergebnis kommt, ist entweder ein Limit mit im Query oder es ist wirklich nur ein passendes Ergebnis in der DB.


Heute schon gepixelt
joschilein ist offline   Mit Zitat antworten
Alt 20.09.2011, 16:18:30   #4 (permalink)
bekämpft die Mächte des Bösen
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über AIM schicken theHacker eine Nachricht über MSN schicken theHacker eine Nachricht über Yahoo! schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 20.468
theHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes Ansehen
Standard

IN

Beachte bei dynamisch erzeugten Ausdrücken, dass der leere IN-Ausdruck
Code:
1:
SELECT bar FROM foo WHERE id IN ();
zum SQL-Syntaxfehler führt. Das musst du also abfangen, wenn du mit implode() arbeitest.
theHacker ist offline   Mit Zitat antworten
Alt 20.09.2011, 16:20:14   #5 (permalink)
schwankend^^

ID: 215354
Lose-Remote
Reallife

Reg: 22.05.2006
Beiträge: 1.505
Gsus ist einfach richtig nettGsus ist einfach richtig nettGsus ist einfach richtig nettGsus ist einfach richtig nett
Standard

also wenn du als $suchbegriff ein vernünftiges Array hast a la:
PHP-Code:
1:
$suchbegriff = array(100,156,236,458,469,15156,62578); 
dann sollte folgende IN-Konstruktion problemlos funktionieren:
PHP-Code:
1:
mysql_query("SELECT * FROM `table` WHERE `id` IN (".implode(', '$suchbegriff).")"); 
(ungetestet)

mfg
Gsus
Gsus ist offline   Mit Zitat antworten
Alt 20.09.2011, 16:22:24   #6 (permalink)
---???---
Benutzerbild von djjlx

ID: 62937
Lose-Remote

djjlx eine Nachricht über ICQ schicken
Reg: 09.05.2006
Beiträge: 579
djjlx sorgt für eine eindrucksvolle Atmosphäredjjlx sorgt für eine eindrucksvolle Atmosphäredjjlx sorgt für eine eindrucksvolle Atmosphäre
Standard

Danke!

Mit
PHP-Code:
1:
FROM `tableWHERE `idIN (".implode(', ', $suchbegriff).")"); 
hats geklappt.

Gruss
djjlx

Geändert von djjlx (20.09.2011 um 16:42:29 Uhr)
djjlx ist offline Threadstarter   Mit Zitat antworten
Alt 20.09.2011, 17:20:24   #7 (permalink)
bekämpft die Mächte des Bösen
Benutzerbild von theHacker

ID: 69505
Lose-Remote

theHacker eine Nachricht über ICQ schicken theHacker eine Nachricht über AIM schicken theHacker eine Nachricht über MSN schicken theHacker eine Nachricht über Yahoo! schicken theHacker eine Nachricht über Skype™ schicken
Reg: 20.04.2006
Beiträge: 20.468
theHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes AnsehentheHacker genießt hohes Ansehen
Standard

Das is genau das, wovor ich gewarnt hab... Der Fall count($suchbegriff)==0 muss separat abgedeckt werden.
theHacker ist offline   Mit Zitat antworten
Alt 20.09.2011, 17:38:16   #8 (permalink)
Erfahrener Benutzer

ID: 118459
Lose-Remote

Reg: 20.04.2006
Beiträge: 4.493
flaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehenflaschenkind genießt hohes Ansehen
Standard

Zitat:
Zitat von theHacker Beitrag anzeigen
Das is genau das, wovor ich gewarnt hab... Der Fall count($suchbegriff)==0 muss separat abgedeckt werden.
Vielleicht war auch vorher ne Validierung, dass das nicht vorkommen kann?

Was aber auch noch nicht bedacht wurde, war eine Absicherung gegen SQL-Injections!
Viele Grüße
flaschenkind
flaschenkind ist offline   Mit Zitat antworten
Alt 20.09.2011, 17:47:43   #9 (permalink)
Erfahrener Benutzer

ID: 272843
Lose-Remote

Reg: 01.02.2007
Beiträge: 1.814
marac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehenmarac genießt hohes Ansehen
Standard

Zitat:
Zitat von flaschenkind Beitrag anzeigen
Was aber auch noch nicht bedacht wurde, war eine Absicherung gegen SQL-Injections!
Weißt du, wie die Variable "$suchbegriff" zustandekommt?
Zitat:
Zitat von flaschenkind Beitrag anzeigen
Vielleicht war auch vorher ne Validierung, dass das nicht vorkommen kann?
eben ;-)
Und nun gebe ich ab zur Werbung:
marac ist offline   Mit Zitat antworten
Alt 20.09.2011, 18:59:30   #10 (permalink)
---???---
Benutzerbild von djjlx

ID: 62937
Lose-Remote

djjlx eine Nachricht über ICQ schicken
Reg: 09.05.2006
Beiträge: 579
djjlx sorgt für eine eindrucksvolle Atmosphäredjjlx sorgt für eine eindrucksvolle Atmosphäredjjlx sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von flaschenkind Beitrag anzeigen
Vielleicht war auch vorher ne Validierung, dass das nicht vorkommen kann?

Was aber auch noch nicht bedacht wurde, war eine Absicherung gegen SQL-Injections!
Doch absicherung gegen Injections wird verwendet. Den Code hab ich vereinfacht dargestellt um es auf den Punkt zu bringen.

gruss
djjlx
djjlx ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Java] Boolsche Werte einer Methode weiterleiten money2000 Programmierung 14 18.11.2009 19:22:54
[MySQL+PHP]Werte einer Spalte vom Tabellenende zählen lustig Programmierung 7 24.02.2009 16:07:05
Auslesen einer XML Datei und Werte in DB eintragen lustig Lose4Scripts (erledigt) 2 15.02.2009 18:39:18
[MYSQL] Mit einer Abfrage mehrere Tabellen durchsuchen glowhand Programmierung 18 08.05.2007 21:29:52
[MYSQL] Doppelte Werte einer Tabelle erkennen... topfklao Programmierung 4 07.06.2006 12:53:45


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:57:08 Uhr.