17

If I have an array of say, some ID's of users. How could i do something like this:

$array = array(1,40,20,55,29,48);
$sql = "SELECT * FROM `myTable` WHERE `myField`='$array'";

Is there a simple way to do this, I thought about looping through array items and then building up one big "WHERE -- OR -- OR -- OR" statement but i thought that might be a bit slow for large arrays.

tarnfeld
  • 25,992
  • 41
  • 111
  • 146

2 Answers2

27

Use IN:

$sql = "SELECT * FROM `myTable` WHERE `myField` IN (1,40,20,55,29,48)";

you can use implode(",", $array) to get the list together from the array.

Pekka
  • 442,112
  • 142
  • 972
  • 1,088
11

You want to use IN:

WHERE `myfield` IN (1,40,20,55,29,48)

Use implode to construct the string:

$sql = "SELECT * FROM `myTable` WHERE `myField` IN (" . implode(',', $array) . ")";
Mark Byers
  • 811,555
  • 193
  • 1,581
  • 1,452