Liaison flexible pour plusieurs paramètres dans une requête MySQLi
Actuellement, pour lier plusieurs paramètres dans une requête MySQLi, la structure répétitive suivante est utilisée :
if ($words_total == 1) { $statement -> bind_param("s", $words[0]); } // ... more if-else conditions for each possible number of parameters ...
Pour calculer le nombre de points d'interrogation nécessaires dans la requête, le code suivant est utilisé :
$marks = ""; for($i = 1; $i<=$words_total; $i++) { if ($i == $words_total) $marks .= "?"; else $marks .= "?,"; }
Approche améliorée avec le déballage des arguments
Heureusement, PHP 5.6 introduit l'opérateur de déballage des arguments (...), qui simplifie la liaison de plusieurs paramètres . Au lieu de s'appuyer sur des chaînes de type statique, l'opérateur peut être utilisé avec un tableau :
// create an array of parameter values $parameters = [$words[0], $words[1], ... $words]; // create a type string dynamically $types = str_repeat('s', count($parameters)); // bind the array using argument unpacking $statement -> bind_param($types, ...$parameters);
Avec cette approche, la liaison peut être gérée dynamiquement quel que soit le nombre de paramètres.
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!