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
  • 24,994
  • 39
  • 109
  • 145

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
  • 431,103
  • 135
  • 960
  • 1,075
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
  • 767,688
  • 176
  • 1,542
  • 1,434