Liaison dynamique des paramètres de liaison MySQL en PHP
Comme vous l'avez découvert, la méthode bind_param dans l'extension MySQLi de PHP peut être limité en termes de gestion dynamique de plusieurs paramètres ou de requêtes sans paramètre. Vous trouverez ci-dessous des stratégies pour résoudre ce problème :
Utilisation de call_user_func_array
L'extrait de code suivant vous permet de créer et de lier dynamiquement un tableau de paramètres :
if (strnatcmp(phpversion(), '5.3') >= 0) { $refs = array(); foreach ($arr as $key => $value) $array_of_params[$key] = &$arr[$key]; call_user_func_array(array(&$stmt, 'bind_params'), $array_of_params); }
Utiliser PHP 5.6 Syntaxe
En PHP 5.6 et versions ultérieures, vous pouvez profiter de l'opérateur de déballage et de la méthode get_result() :
public function get_custom_result($sql, $types = null, $params = null) { $stmt = $this->mysqli->prepare($sql); $stmt->bind_param($types, ...$params); if (!$stmt->execute()) return false; return $stmt->get_result(); }
Exemple :
$mysqli = new database(DB_HOST, DB_USER, DB_PASS, DB_NAME); $output = new search($mysqli); $sql = "SELECT * FROM root_contacts_cfm WHERE root_contacts_cfm.cnt_id = ? AND root_contacts_cfm.cnt_firstname = ? ORDER BY cnt_id DESC"; $res = $output->get_custom_result($sql, 'ss', array('1', 'Tk')); while ($row = res->fetch_assoc()) { echo $row['fieldName'] . '<br>'; }
Ces solutions offrent plus de flexibilité et des capacités de liaison dynamique pour votre MySQL requêtes.
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!