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
Mary-Kate Olsenoriginal
2024-12-24 06:25:11156parcourir

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...

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); 

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();

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!

Déclaration:
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