Maison >base de données >tutoriel mysql >Déclarations préparées `mysqli` : `bind_result()` ou `get_result()` ?

Déclarations préparées `mysqli` : `bind_result()` ou `get_result()` ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-25 09:22:13194parcourir

`mysqli` Prepared Statements: `bind_result()` or `get_result()`?

Bind_result vs Get_result : lequel utiliser ?

Introduction

Lorsque vous travaillez avec des instructions préparées dans MySQLi, vous disposez de deux options pour récupérer le résultat : bind_result() et get_result(). Comprendre les différences entre ces méthodes est crucial pour optimiser les opérations de votre base de données.

Bind_result()

bind_result() lie des variables spécifiques aux colonnes du résultat de la requête, vous permettant de les attribuer directement à variables scalaires. Il est couramment utilisé lorsque vous avez besoin de colonnes spécifiques à partir d'une requête.

Exemple :

$query = 'SELECT id, first_name, last_name FROM table WHERE id = ?';
$id = 5;

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

Avantages :

  • Fonctionne avec des versions PHP obsolètes.
  • Renvoie des variables distinctes pour chacune colonne.

Inconvénients :

  • Vous oblige à répertorier manuellement toutes les variables à lier.
  • Nécessite du code supplémentaire pour renvoyer le ligne sous forme de tableau.
  • Doit être mis à jour lorsque la structure de la table changements.

Get_result()

get_result() récupère le résultat complet sous forme de tableau associatif ou énuméré, automatiquement rempli avec les données de la ligne renvoyée. C'est pratique lorsque vous devez travailler avec la ligne entière sous forme de tableau.

Exemple :

$query = 'SELECT * FROM table WHERE id = ?';
$id = 5;

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

Avantages :

  • Renvoie automatiquement un tableau ou un objet associatif/énuméré.
  • Prend en charge fetch_all() pour récupérer toutes les lignes renvoyées à la fois.

Inconvénients :

  • Nécessite le pilote natif MySQL (mysqlnd).

Limitations et différences

Les deux méthodes ont limitations :

  • bind_result() nécessite une liste de colonnes explicite, ce qui le rend sujet aux erreurs et inflexible.
  • get_result() ne prend pas en charge les versions PHP obsolètes et nécessite le pilote natif MySQL.

Choisir la bonne méthode

La meilleure méthode dépend de votre spécificité exigences :

  • Si vous avez besoin de variables distinctes pour des colonnes spécifiques et travaillez avec des versions PHP plus anciennes, utilisez bind_result().
  • Si vous préférez travailler avec la ligne sous forme de tableau, souhaitez récupérez toutes les lignes à la fois et disposez d'un pilote natif MySQL, utilisez get_result().

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