Передача массива в mysql

В настоящее время у меня есть массив значений (business_id)

скажем, его

Array ( [0] => 12 [1] => 14 [2] => 15 ) 

Каков наилучший способ использовать каждое из этих значений для получения связанной информации о строках для каждого бизнес-файла из базы данных.

Может ли это быть одним в одном вопросе, это мой вопрос. Очевидно, вы могли бы сделать

 $q = "select * from business where business_id = 12"; $rs = mysql_query($q); 

Related of "Передача массива в mysql"

 $ids = array(1, 2, 3, 4); $ids = join(', ', $ids); $query = "SELECT * FROM business WHERE business_id IN ($ids)"; // $query => SELECT * FROM business WHERE business_id IN (1, 2, 3, 4) 

Обычные предупреждения SQL-инъекций по-прежнему применяются, вы можете сначала пройти через идентификаторы, чтобы проверить или избежать их. Кроме того, если вы ожидаете строки вместо чисел, используйте это:

 $ids = array('a', 'b', 'c', 'd'); $ids = join("', '", $ids); $query = "SELECT * FROM business WHERE business_id IN ('$ids')"; // $query => SELECT * FROM business WHERE business_id IN ('a', 'b', 'c', 'd') 

Используйте операцию SQL IN:

 $sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $values) . ')'; $rs = mysql_query($sql); 

Примечание. Если значения поступают от клиента, их следует дезинфицировать либо с помощью mysql_real_escape_string() либо потому, что это числа, вы можете использовать intval() . Например:

 $ids = array_map('intval', $values); $sql = 'SELECT * FROM business WHERE business_id IN (' . implode(',', $ids) . ')'; $rs = mysql_query($sql); 

Вы можете присоединиться к массиву с помощью запятой в качестве разделителя и использовать инструкцию SQL IN.

 $businessIds = join(",", $array); $q = "select * from business where business_id IN ($businessIds)"; $rs = mysql_query($q);