wake-up-neo.net

MySQL PHP - SELECT WHERE id = array ()?

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.

37
user569322

Verwenden Sie IN.

$sql = 'SELECT * 
          FROM `table` 
         WHERE `id` IN (' . implode(',', array_map('intval', $array)) . ')';
103
alex

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.

28
Nathan Taylor

Verwenden Sie einfach die ID IN () -Syntax:

$sql = "SELECT FROM `table` WHERE `ID` IN (".implode(',',$array).")";
16
Ben D

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.

1
Mosty Mostacho

Sie können SELECT WHERE id IN (item1, item2...). Durchlaufen Sie einfach Ihr Array PHP, um Ihr Array für die Abfrage zu erstellen.

0
yoozer8

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.

0
David Faber