Pour vérifier si une valeur de tableau existe dans un tableau, vous utilisez la fonction IN ()
clause.
Le code ci-dessous utilise des instructions préparées pour MySQLi
ou PDO
pour aider à atténuer les attaques par injection SQL. La vérification des erreurs est omise pour des raisons de brièveté ; vous devrez notamment vérifier si $ids
a au moins un élément et les erreurs habituelles pour chaque méthode de base de données (ou configurez votre pilote de base de données pour qu'il lance des exceptions).
$in = join(',', array_fill(0, count($ids), '?'));
$select = <<<SQL
SELECT *
FROM galleries
WHERE id IN ($in);
SQL;
// if using MySQLi (PHP 5.6):
$statement = $mysqli->prepare($select);
$statement->bind_param(str_repeat('i', count($ids)), ...$ids);
$statement->execute();
$result = $statement->get_result();
// if using PDO (or don't have PHP 5.6):
$statement = $pdo->prepare($select);
$statement->execute($ids);
Faire le IN()
avec des chaînes de caractères.
Il est facile de passer des chaînes de caractères aux entiers grâce aux paramètres liés. Pour PDO, aucun changement n'est nécessaire ; pour MySQLi
changement str_repeat('i',
à str_repeat('s',
si vous avez besoin de vérifier les chaînes de caractères.