Расширение PHP Mysqli: использование ключевого слова IN в подготовленном операторе

#php #mysqli #prepared-statement

#php #mysqli #подготовленный оператор

Вопрос:

Я выполняю некоторые запросы к базе данных MySQL, используя расширение MySQLi в PHP. Мне нужно выполнить запрос, подобный этому:

 SELECT col1, col2 FROM mytable WHERE id IN (2, 4, 6);
  

Это конкретный пример запроса, но количество идентификаторов внутри круглой скобки после IN ключевого слова будет отличаться. Поскольку я хочу использовать mysqli->prepare() функцию (подготовленный оператор) Я бы сделал это так:

 $statement->prepare("SELECT col1, col2 FROM mytable WHERE id IN (?)");
$statement->bind_pararm("s".... something)
  

Я не уверен, что поместить в функцию bind param, поскольку я не могу знать, сколько идентификаторов на самом деле будет запрошено. Я не смог найти примеров использования IN ключевого слова внутри подготовленных операторов.

Ответ №1:

Если вы подготовите свое заявление, когда оно вам понадобится, вы можете создать заполнители, такие как

 join(",", array_fill(0, count($ids) , "?"))
  

или что-то в этом роде.