Lors de la création d'instructions préparées MySQL en PHP, vous pouvez rencontrer des situations où le nombre de paramètres dans la clause IN est différent. Pour gérer cette situation de manière dynamique, envisagez l'approche suivante :
Créez une table temporaire : Insérez chaque paramètre dans une table temporaire puis rejoignez la table dans la requête.
Méthode d'épissage dynamique :
array_fill
et implode
pour créer une clause IN avec des espaces réservés. sprintf
pour préparer des instructions avec des clauses IN dynamiques. L'exemple suivant illustre la méthode d'épissage dynamique :
<code class="language-php">$dbh = new PDO($dbConnect, $dbUser, $dbPass); $parms = array(12, 45, 65, 33); $parmcount = count($parms); $inclause = implode(',', array_fill(0, $parmcount, '?')); $sql = 'SELECT age, name FROM people WHERE id IN (%s)'; $preparesql = sprintf($sql, $inclause); $st = $dbh->prepare($preparesql); $st->execute($parms);</code>
Ces méthodes fournissent un moyen efficace de gérer les clauses IN de taille variable tout en conservant les avantages en matière de sécurité et de performances des instructions préparées.
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!