Maison > développement back-end > tutoriel php > Comment puis-je lier dynamiquement plusieurs paramètres dans les requêtes mysqli ?

Comment puis-je lier dynamiquement plusieurs paramètres dans les requêtes mysqli ?

Mary-Kate Olsen
Libérer: 2024-12-24 06:25:11
original
192 Les gens l'ont consulté

How Can I Dynamically Bind Multiple Parameters in mysqli Queries?

Liaison dynamique de plusieurs paramètres dans les requêtes mysqli

Traditionnellement, les développeurs PHP s'appuient sur de longues instructions conditionnelles ou sur une concaténation manuelle pour lier plusieurs paramètres dans requêtes mysqli. Cela peut être fastidieux et sujet aux erreurs.

Liaison de paramètres codés en dur

L'exemple que vous avez fourni illustre l'approche codée en dur, dans laquelle le nombre de points d'interrogation et de types de paramètres est manuellement ajusté en fonction du nombre de valeurs d’entrée. Bien que cela fonctionne, ce n'est pas une solution idéale pour gérer les requêtes dynamiques.

Opérateur de déballage d'arguments

Heureusement, PHP 5.6 a introduit l'opérateur de déballage d'argument (...) qui nous permet de transmettre des tableaux en tant que paramètres à des fonctions qui attendent plusieurs arguments individuels.

Solution utilisant Argument Déballage

Pour lier dynamiquement un nombre arbitraire de paramètres en PHP 5.6 , nous pouvons utiliser l'approche suivante :

1. Créer une chaîne de types : Concaténer le caractère correspondant au type de paramètre (par exemple, s pour chaîne) autant de fois qu'il y a de paramètres.

$types = str_repeat('s', count($array)); // returns sss...
Copier après la connexion

2. Lier les paramètres : Utilisez l'opérateur de décompression d'arguments pour transmettre le tableau de valeurs de paramètres en tant que paramètres individuels avec la chaîne de types :

$stmt->bind_param($types, ...$array); 
Copier après la connexion

Exemple :

$array = ['a','b','c']; 
$sql   = "SELECT name FROM table WHERE city IN (?,".str_repeat('?,', count($array) - 2).")"; //  returns ?,?,?...
$stmt  = $mysqli->prepare($sql);
$stmt->bind_param('s', ...$array); 
$stmt->execute();
Copier après la connexion

Cette approche gère avec élégance n'importe quel nombre d'entrées paramètres sans avoir besoin d’instructions conditionnelles ou de concaténation manuelle.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal