Maison >développement back-end >tutoriel php >`bind_result` vs `get_result` dans MySQLi : quelle méthode de déclaration préparée devriez-vous choisir ?

`bind_result` vs `get_result` dans MySQLi : quelle méthode de déclaration préparée devriez-vous choisir ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-04 16:30:17916parcourir

`bind_result` vs. `get_result` in MySQLi: Which Prepared Statement Method Should You Choose?

bind_result vs get_result dans les instructions préparées MySQL

Les instructions préparées dans MySQLi fournissent deux méthodes principales pour récupérer les résultats des requêtes : bind_result et get_result. Cet article compare les objectifs, les avantages et les limites de chaque méthode.

bind_result

La méthode bind_result lie explicitement les variables aux colonnes renvoyées par une requête. Il nécessite que l'ordre des variables corresponde strictement à la structure des colonnes et est généralement utilisé lorsque la requête renvoie un sous-ensemble spécifique de colonnes.

Avantages :

  • Compatible avec les anciennes versions de PHP
  • Renvoie des variables distinctes pour chacune colonne

Inconvénients :

  • Liaison manuelle de chaque variable
  • Nécessite du code supplémentaire pour renvoyer la ligne sous forme de tableau
  • Des mises à jour du code sont nécessaires si la structure de la table changes

get_result

La méthode get_result renvoie un objet qui contient l'intégralité du jeu de résultats de la requête. Il nécessite MySQL Native Driver (mysqlnd) et offre une plus grande flexibilité.

Avantages :

  • Renvoie un tableau ou un objet associatif/énuméré avec les données de la ligne renvoyée.
  • Permet de récupérer toutes les lignes renvoyées en même temps en utilisant fetch_all()

Inconvénients :

  • Nécessite un pilote natif MySQL

Exemple : bind_result

<?php
$query1 = 'SELECT id, first_name, last_name, username FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query1);
$stmt->bind_param('i', $id);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $first_name, $last_name, $username);

while ($stmt->fetch()) {
    echo 'ID: ' . $id . '<br>';
    echo 'First Name: ' . $first_name . '<br>';
    echo 'Last Name: ' . $last_name . '<br>';
    echo 'Username: ' . $username . '<br><br>';
}
?>

Exemple : get_result

<?php
$query2 = 'SELECT * FROM `table` WHERE id = ?';
$id = 5;

$stmt = $mysqli->prepare($query2);
$stmt->bind_param('i', $id);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo 'ID: ' . $row['id'] . '<br>';
    echo 'First Name: ' . $row['first_name'] . '<br>';
    echo 'Last Name: ' . $row['last_name'] . '<br>';
    echo 'Username: ' . $row['username'] . '<br><br>';
}
?>

Conclusion

Le choix entre bind_result et get_result dépend des exigences spécifiques de l'application. bind_result offre une compatibilité avec les anciennes versions de PHP et permet une liaison précise des variables, tandis que get_result offre de la flexibilité et élimine le besoin d'une liaison manuelle des variables. Cependant, get_result nécessite le pilote natif MySQL.

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