Maison > développement back-end > tutoriel php > PDO peut-il gérer la liaison de tableau pour les requêtes de clause IN() ?

PDO peut-il gérer la liaison de tableau pour les requêtes de clause IN() ?

DDD
Libérer: 2024-12-25 07:52:14
original
640 Les gens l'ont consulté

Can PDO Handle Array Binding for IN() Clause Queries?

La liaison d'un tableau à une condition IN() peut-elle être effectuée avec PDO ?

L'utilisation de tableaux dans les requêtes PDO pour les conditions IN() peut être obtenu en construisant manuellement les espaces réservés pour chaque membre du tableau. Voici un aperçu du processus :

$ids       = [1, 2, 3, 7, 8, 9];
$inQuery    = str_repeat('?,', count($ids) - 1) . '?'; // generates ?,?,?,?,?,?

$stmt = $db->prepare("SELECT * FROM table WHERE id IN($inQuery)");
$stmt->execute($ids);
$data = $stmt->fetchAll();
Copier après la connexion

Construisez la variable $inQuery à l'aide de str_repeat pour créer une liste d'espaces réservés. Cela garantit que chaque membre du tableau dispose d'un espace réservé correspondant.

Une autre approche consiste à fusionner des tableaux contenant des espaces réservés et leurs valeurs associées. Cette méthode convient lorsque d'autres espaces réservés existent dans la requête.

$arr = [1,2,3];
$in  = str_repeat('?,', count($arr) - 1) . '?';
$sql = "SELECT * FROM table WHERE foo=? AND column IN ($in) AND bar=? AND baz=?";
$stmt = $db->prepare($sql);
$params = array_merge([$foo], $arr, [$bar, $baz]);
$stmt->execute($params);
$data = $stmt->fetchAll();
Copier après la connexion

Les espaces réservés nommés nécessitent une approche légèrement différente, dans laquelle vous créez une séquence d'espaces réservés correspondante, telle que :id0,:id1,:id2.

$ids = [1,2,3];
$in = "";
$i = 0;
foreach ($ids as $item) {
    $key = ":id" . $i++;
    $in .= ($in ? "," : "") . $key;
    $in_params[$key] = $item;
}

$sql = "SELECT * FROM table WHERE foo=:foo AND id IN ($in) AND bar=:bar";
$stmt = $db->prepare($sql);
$stmt->execute(array_merge($params, $in_params));
$data = $stmt->fetchAll();
Copier après la connexion

Ces méthodes fournissent un moyen sécurisé et efficace d'utiliser des tableaux dans des conditions IN() avec PDO.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal