Mögliches Duplikat:
MySQL-Abfrage mit einem Array
Übergeben eines Arrays an mysql
Ich habe ein Array in PHP:
$array = array(1, 4, 5, 7);
Wie Sie sehen können, habe ich ein Array mit verschiedenen Werten, aber ich möchte eine MYSQL-Anweisung schreiben, die prüft, ob das id
gleich ist auf einen der Werte im Array. Wenn eine Zeile beispielsweise den Wert id
1 hat, wird diese Zeile zurückgegeben, und zwar für 4, 5 und 7. Die Länge des Arrays kann je nach Art des Programms variieren Wo liegt das Problem? Könnte ich einfach tun:
SELECT ...
FROM ...
WHERE id = '$array'
Oder gibt es einen besseren Weg?
Wenn ich unklar war, fragen Sie mich bitte nach weiteren Informationen.
Verwenden Sie IN
.
$sql = 'SELECT *
FROM `table`
WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
Was Sie suchen, ist die Anweisung IN()
. Hiermit wird geprüft, ob ein bestimmtes Feld einen oder mehrere Werte enthält.
SELECT * FROM `Table` WHERE `id` IN (1, 2, 3)
Sie können eine einfache Schleife verwenden, um Ihre $array
Variable in das richtige Format. Achten Sie auf die SQL-Injection, wenn Ihre Array-Werte vom Frontend stammen.
Verwenden Sie einfach die ID IN ()
-Syntax:
$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
Sie können Ihre Anfrage folgendermaßen schreiben:
select * from table where id in (1, 4, 6, 7)
Sie können beliebig viele Werte hinzufügen.
Sie können SELECT WHERE id IN (item1, item2...)
. Durchlaufen Sie einfach Ihr Array PHP, um Ihr Array für die Abfrage zu erstellen.
Sie möchten den Operator IN
verwenden:
$sql = 'SELECT FROM WHERE id IN (' . implode(",", $array) . ')';
Möglicherweise gibt es in MySQL ein Limit für die Anzahl der Werte, die Sie in einer Liste mit dem Operator IN
verwenden können.