Mysql, где id находится в массиве

У меня есть строка идентификаторов, таких как 1,2,3,4,5, и я хочу иметь возможность перечислять все строки в mysql, где идентификатор содержится в этом списке.

Я предположил, что самым простым способом было бы превратить строку в массив, а затем совместить в ($ array), но она не работает для меня – никаких ошибок и т. Д., Но она не возвращает строк:

$string="1,2,3,4,5"; $array=array_map('intval', explode(',', $string)); $query=mysqli_query($conn, "SELECT name FROM users WHERE id IN ('".$array."')"); 

Если я делаю var_dump массива $, я получаю:

 array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) } 

Любая идея, где я напортачиваюсь?

 $string="1,2,3,4,5"; $array=array_map('intval', explode(',', $string)); $array = implode("','",$array); $query=mysqli_query($conn, "SELECT name FROM users WHERE id IN ('".$array."')"); 

Ваш запрос переводится на:

 SELECT name FROM users WHERE id IN ('Array'); 

Или что-то в этом влияют.

Вместо этого попробуйте использовать подготовленные запросы:

 $numbers = explode(',', $string); $prepare = array_map(function(){ return '?'; }, $numbers); $statement = mysqli_prepare($link , "SELECT name FROM users WHERE id IN ('".implode(',', $prepare)."')"); if($statement) { $ints = array_map(function(){ return 'i'; }, $numbers); call_user_func_array("mysqli_stmt_bind_param", array_merge( array($statement, implode('', $ints)), $numbers )); $results = mysqli_stmt_execute($statement); // do something with results // ... } 

+ Изменить

 $array=array_map('intval', explode(',', $string)); 

Для того, чтобы:

 $array= implode(',', array_map('intval', explode(',', $string))); 

array_map возвращает массив, а не строку. Вам нужно преобразовать массив в строку, разделенную запятой, для использования в предложении WHERE.