@Dreaded

Как вставить данные из массива в подготовленное выражение?

У меня есть некоторое количество id, которые хранятся в массиве. Каждый раз данные в массиве обновляются.
Задача сформировать запрос в БД, таким образом что бы в одном запросе передать все ID. Вопрос в том, как подставить данные из массива в подготовленное выражение?
Вот как я пытаюсь это сделать, но запрос возвращает только 1 строку.
$ids = array(1,2,3,4,5,6);
    $strIds = implode(',', $ids);
    $query = "SELECT * FROM table WHERE id IN (?)";
    $stmt = mysqli_prepare($connection , $query);
    mysqli_stmt_bind_param($stmt, 's', $strIds);
    mysqli_stmt_execute($stmt);
    $response = mysqli_fetch_all(mysqli_stmt_get_result($stmt));
  • Вопрос задан
  • 71 просмотр
Решения вопроса 2
DevMan
@DevMan
https://websitebeaver.com/prepared-statements-in-p...

a лучше пользоваться pdo.
Ответ написан
Комментировать
@Dreaded Автор вопроса
$inArr = [12, 23, 44];
$clause = implode(',', array_fill(0, count($inArr), '?')); //create 3 question marks
$types = str_repeat('i', count($inArr)); //create 3 ints for bind_param
$stmt = $mysqli->prepare("SELECT id, name FROM myTable WHERE id IN ($clause)");
$stmt->bind_param($types, ...$inArr);
$stmt->execute();
$resArr = $stmt->get_result()->fetch_all(MYSQLI_ASSOC);
if(!$resArr) exit('No rows');
var_export($resArr);
$stmt->close();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы