SQL IN-Operator in PHP?
asdf
- php
Hallo,
es gibt ja den IN-Operator in SQL wobei die Klassische Syntax
"SELECT * FROM xxx IN ('a', 'b', 'c')"
ist.
Wenn ich jetzt jedoch mit PHP diese Abfrage machen möchte und einen bestehenden Array $a habe, wie kann ich das möglichst elegant lösen?
Muss ich dann
<?php
$req = "SELECT * FROM xxx IN (";
foreach ($a as $b) {
$req += "'".$b."', ";
}
$req += ")";
$answ = sql_query($req);
?>
machen? Das wäre voll unschön!
Habe dazu leider bei Google nix gefunden!
Würde mich sehr über eine Antwort freuen!
Greezez!
Hallo
es gibt ja den IN-Operator in SQL wobei die Klassische Syntax
"SELECT * FROM xxx IN ('a', 'b', 'c')"
ist.
Wenn ich jetzt jedoch mit PHP diese Abfrage machen möchte und einen bestehenden Array $a habe, wie kann ich das möglichst elegant lösen?
Muss ich dann
<?php
$req = "SELECT * FROM xxx IN (";
foreach ($a as $b) {
$req += "'".$b."', ";
}
$req += ")";$answ = sql_query($req);
?>
> machen? Das wäre voll unschön!
Da war nix mit [implode](http://www.php.net/implode) bzw. join (Alias von implode) zu finden? \*btw\* Die in $a abgelegten Werte sind bereits auf erlaubten Inhalt geprüft?
Tschö, Auge
--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
[Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)
Hallo
<?php
// ...
foreach ($a as $b) {
$req += "'".$b."', ";
}
$req += ")";
// ...
?>
Strings werden in PHP nicht mit '+=' verkettet. benutze stattdessen '.='.
Tschö, Auge
--
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.
Terry Pratchett, "Wachen! Wachen!"
[Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)
Da war nix mit implode bzw. join (Alias von implode) zu finden?
Nö hab ich nicht gefunden. Ist aber eine Sehr gute Idee!!! Danke!!!
*btw* Die in $a abgelegten Werte sind bereits auf erlaubten Inhalt geprüft?
Kommen direkt aus der Datenbank! -> also ja.
Tschö, Auge
^^
Hallo,
*btw* Die in $a abgelegten Werte sind bereits auf erlaubten Inhalt geprüft?
Kommen direkt aus der Datenbank! -> also ja.
also nein! Handelt es sich bei den Werten um Zeichenketten, dann hast Du ein potentielles Problem. Sobald ein Wert vorkommt, der ein einfaches Anführungszeichen enthält, tritt es ans Tageslicht. Da helfen noch nicht einmal die Magic Quotes.
Wenn die Daten direkt aus der Datenbank kommen, möchtest Du sehr wahrscheinlich eine SELECT-Anweisung statt einer Werte-Liste verwenden, d.h. SQL statt PHP nutzen. OK, möglicherweise willst Du die WHERE-Klausel der Subquery mit PHP modifizieren :-)
Freundliche Grüße
Vinzenz
Hallo,
es gibt ja den IN-Operator in SQL wobei die Klassische Syntax
"SELECT * FROM xxx IN ('a', 'b', 'c')"
Wenn ich jetzt jedoch mit PHP diese Abfrage machen möchte und einen bestehenden Array $a habe, wie kann ich das möglichst elegant lösen?
Eleganz ist zweitrangig. Robust und zuverlässig sollte es sein.
1. Jedes Array-Element kontextgerecht behandeln.
2. implode() nutzen.
3. Daran denken, dass Datenbankmanagementsysteme Begrenzungen für die Länge
von SQL-Statements haben können.
Ganz besonders elegant ist es, wenn man auf die API verzichten und statt einer Werteliste ein SELECT-Statement verwenden kann.
Freundliche Grüße
Vinzenz