Передача массива в запрос с помощью предложения 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

2022-11-14T23:50:36+00:00