Maison >développement back-end >tutoriel php >Comment puis-je lier dynamiquement les paramètres MySQL en PHP ?

Comment puis-je lier dynamiquement les paramètres MySQL en PHP ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-01 19:11:14906parcourir

How Can I Dynamically Bind MySQL Parameters in PHP?

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!

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