Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Where Bedingung ist Array?

0 views
Skip to first unread message

Sandra Berger

unread,
Dec 6, 2009, 7:20:01 PM12/6/09
to
Wie definiere ich eine Abfrage bei der die Where-Bedingung ein Array ist?

$auswahl = array ("1","2","3");

Ich m�chte alle ID�s aus meiner Tabelle abfragen, die einem Wert im Array
entsprechen.

$sql="SELECT ID FROM tab1 WHERE ID=".$auswahl;
--> fuktioniert offenbar nicht :-(

Wie wird`s gemacht?

Antwort m�glichst so, dass ich (wie an Fragestellung ersichtlich ;-) als
Anf�ngerin eine Chance habe, die Antwort zu verstehen ;-) ...

Danke!


Carsten Wiedmann

unread,
Dec 6, 2009, 8:26:17 PM12/6/09
to
Sandra Berger schrieb:

> Wie definiere ich eine Abfrage bei der die Where-Bedingung ein Array ist?
>
> $auswahl = array ("1","2","3");
>
> Ich möchte alle ID?s aus meiner Tabelle abfragen, die einem Wert im Array

> entsprechen.
>
> $sql="SELECT ID FROM tab1 WHERE ID=".$auswahl;
> --> fuktioniert offenbar nicht :-(
>
> Wie wird`s gemacht?

Im Prinzip wäre das normal:
| WHERE ID=1 OR ID=2 OR ID=3

Den String müsste man dann in einer Schleife aus dem Array "zusammenbauen".

In dem Fall geht's aber auch einfacher (/ schneller):
| <?php
| $auswahl = array(1, 2, 3);
| $sql = 'SELECT ID FROM tab1 WHERE ID IN (' . implode(',', $auswahl) . ')';
| ?>


Solltest natürlich dafür sorgen, dass $auswahl aus wirklich Werte enthält.
Zumindest "0" wenn sonst keine Auswahl getroffen wurde. Das das Array auch
wirklich nur Zahlen enthalten kann, sollte man so auch vorher schon prüfen.

Gruß
Carsten

Michael Fesser

unread,
Dec 6, 2009, 8:30:29 PM12/6/09
to
.oO(Sandra Berger)

>Wie definiere ich eine Abfrage bei der die Where-Bedingung ein Array ist?
>
>$auswahl = array ("1","2","3");
>
>Ich m�chte alle ID�s aus meiner Tabelle abfragen, die einem Wert im Array
>entsprechen.
>
>$sql="SELECT ID FROM tab1 WHERE ID=".$auswahl;
>--> fuktioniert offenbar nicht :-(
>
>Wie wird`s gemacht?

Die Query sollte im Ergebnis so aussehen:

SELECT ID FROM tab1 WHERE ID IN (1,2,3)

Die Werte in den Klammern erzeugst Du mittels implode() aus Deinem
Array. Bei solchen Konstrukten verwende ich gerne sprintf(), das s�he
dann ganz grob so aus:

$sql = sprintf('SELECT ID FROM tab1 WHERE ID IN (%s)',
implode(',', $auswahl)
);

HTH
Micha

Claus Reibenstein

unread,
Dec 7, 2009, 2:43:25 AM12/7/09
to
Sandra Berger schrieb:

> Wie definiere ich eine Abfrage bei der die Where-Bedingung ein Array ist?
>
> $auswahl = array ("1","2","3");
>

> Ich mᅵchte alle IDᅵs aus meiner Tabelle abfragen, die einem Wert im Array


> entsprechen.
>
> $sql="SELECT ID FROM tab1 WHERE ID=".$auswahl;

Es geht offenbar um eine SQL-Abfrage. Damit bist Du hier erst einmal
vollkommen falsch. Dein Problem ist offensichtlich nicht PHP, sondern SQL.

Bitte stelle Deine Frage in einer der Datenbankgruppen
(de.comp.datenbanken.*), aber ohne das PHP-Brimborium drumrum (manche
der dortigen Spezialisten reagieren allergisch auf PHP). Welche davon
die fᅵr Dich passende Gruppe ist, kann ich Dir nicht sagen, da Du
nirgends erwᅵhnt hast, welche Datenbank Du verwendest.

Wenn Du weiᅵt, wie das zugehᅵrige SQL-Statement aussieht, und Du
Schwierigkeiten hast, dies in PHP umzusetzen, darfst Du Dich gerne
wieder hier oder besser in de.comp.lang.php.datenbanken melden.

Gruᅵ. Claus

Stefan Scholl

unread,
Dec 10, 2009, 4:10:37 AM12/10/09
to
Sandra Berger <sul...@gmx.de> wrote:
> Antwort m�glichst so, dass ich (wie an Fragestellung ersichtlich ;-) als
> Anf�ngerin eine Chance habe, die Antwort zu verstehen ;-) ...

Alternativ ein Buch bis zum Ende durchlesen. Gibt genug zu PHP
und MySQL.

Sollte auch der IN-Operator von MySQL drin behandelt werden.
http://dev.mysql.com/doc/refman/5.4/en/comparison-operators.html#function_in


--
Web (en): http://www.no-spoon.de/ -*- Web (de): http://www.frell.de/

0 new messages