Передача массива в запрос с помощью предложения WHERE
Использование PDO: [1]
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<prepare($select);
$statement->execute($ids);
Использование MySQLi [2]
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<prepare($select);
$statement->bind_param(str_repeat('i', count($ids)), ...$ids);
$statement->execute();
$result = $statement->get_result();
Пояснение:
Используйте оператор SQL IN()
, чтобы проверить, существует ли значение в данном списке.
В целом это выглядит mysqlclient так:
expr IN (value,...)
Мы можем создать выражение, которое mysql-server будет помещено в ()
из нашего php.ini массива. Обратите внимание, что mysql внутри скобок должно быть php.ini хотя бы одно значение, иначе php.ini MySQL вернет ошибку; это php-frameworks равносильно тому, чтобы в mysql нашем входном массиве было php-include хотя бы одно значение. Чтобы mysql-query предотвратить атаки с использованием mysql-server SQL-инъекций, сначала сгенерируйте mysqldump ?
для каждого элемента ввода, чтобы php-frameworks создать параметризованный php-frameworks запрос. Здесь я предполагаю, что php массив, содержащий ваши идентификаторы, называется php.ini $ids
:
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<
Учитывая входной массив php5 из трех элементов, $select
будет php-fpm выглядеть так:
SELECT *
FROM galleries
WHERE id IN (?, ?, ?)
Снова обратите php5 внимание, что для каждого php элемента во входном массиве mysql есть ?
. Затем мы будем использовать mysqlclient PDO или MySQLi для подготовки mysql-server и выполнения запроса, как php указано выше.
Использование оператора IN()
со строками
Из-за связанных php5 параметров легко переключаться mysqlclient между строками и целыми числами. Для php-frameworks PDO никаких изменений не php5 требуется; для MySQLi измените mysqlclient str_repeat('i',
на str_repeat('s',
, если вам нужно проверить jsonarray строки.
[1]: Для краткости я пропустил проверку ошибок. Вам необходимо проверить наличие обычных ошибок для каждого метода базы данных (или настроить драйвер БД на создание исключений).
[2]: Требуется PHP 5.6 или выше. Опять же, для краткости я пропустил проверку ошибок.
php
mysql
arrays
Передача массива в запрос с помощью предложения WHERE
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.