$query = !empty($_GET['box']) ? "SELECT*FROM products WHERE categoryID IN (" . implode(',', $_GET['box']) . ")" : "SELECT*FROM products"; $result = $pdo->query($query); $products = $result->fetchAll(); Всем привет! Есть три чекбокса, name которых передается в $_GET['box']. Хотела сделать параметризацию categoryID (categoryID=:categoryID) и передать методу execute() индексы для дальнейшего вывода запрашиваемых данных экран. У меня получилось это сделать в нижеприведенном скрипте, но с огромными костылями. $arr = []; $arr_products = []; $products = []; if(!empty($_GET['box'])) { $arr = $_GET['box']; } else { $products = []; $result = $pdo->query("SELECT * FROM products"); $products = $result->fetchAll(); } foreach ($arr as $key) { $query= "SELECT * FROM products WHERE categoryID =:categoryID"; $result = $pdo->prepare($query); $result -> execute(['categoryID' => $key]); $arr_products = $products; $products = array_merge($arr_products, $result->fetchAll()); }
окей гугл PHP: <?php $ids = [1,2,3,4,5]; // any array of ids $count = count($id); $placeholders = implode(',', array_fill(0, $count, '?')); $bindStr = str_repeat('i', $count); $stmt = $mysqli -> prepare("SELECT * FROM table WHERE id IN ($placeholders)"); $stmt -> bind_param($bindStr, ...$ids); $stmt -> execute();