Maison >base de données >tutoriel mysql >« bind_result » vs « get_result » : quelle méthode MySQLi dois-je utiliser pour récupérer les résultats d'une requête ?

« bind_result » vs « get_result » : quelle méthode MySQLi dois-je utiliser pour récupérer les résultats d'une requête ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-13 03:28:10630parcourir

`bind_result` vs. `get_result`: Which MySQLi Method Should I Use for Retrieving Query Results?

Choisir entre bind_result et get_result

Lorsque vous travaillez avec des instructions préparées pour des requêtes de base de données, la sélection de la méthode appropriée pour gérer le résultat peut avoir un impact significatif sur le l'efficacité et la flexibilité de votre code. Cet article examine les différences entre bind_result et get_result, deux méthodes couramment utilisées pour récupérer les données de résultat.

bind_result

bind_result est idéal lorsqu'un contrôle précis sur l'affectation des variables est souhaité. En spécifiant explicitement les variables à lier à chaque colonne, cela garantit que l'ordre des variables correspond strictement à la structure de la ligne renvoyée. Cette approche est avantageuse lorsque la structure de la ligne renvoyée est connue à l'avance et que le code peut être personnalisé en conséquence.

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

$stmt = $mysqli->prepare($query1);
/*
    Binds variables to prepared statement

    i    corresponding variable has type integer
    d    corresponding variable has type double
    s    corresponding variable has type string
    b    corresponding variable is a blob and will be sent in packets
*/
$stmt->bind_param('i',$id);

/* execute query */
$stmt->execute();

/* Store the result (to get properties) */
$stmt->store_result();

/* Get the number of rows */
$num_of_rows = $stmt->num_rows;

/* Bind the result to variables */
$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>';
}

Avantages de bind_result :

  • Compatible avec les versions PHP obsolètes
  • Renvois séparés variables

Inconvénients de bind_result :

  • Liste manuelle de toutes les variables requises
  • Nécessite plus de code pour renvoyer la ligne sous forme de array
  • Le code doit être mis à jour lorsque la structure de la table changes

get_result

get_result fournit une solution plus polyvalente pour la récupération de données. Il crée automatiquement un tableau ou un objet associatif/énuméré contenant les données de la ligne renvoyée. Cette méthode est pratique lorsqu'il s'agit de structures de résultats dynamiques ou lorsque la flexibilité d'accès aux données est essentielle.

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

$stmt = $mysqli->prepare($query2);
/*
    Binds variables to prepared statement

    i    corresponding variable has type integer
    d    corresponding variable has type double
    s    corresponding variable has type string
    b    corresponding variable is a blob and will be sent in packets
*/
$stmt->bind_param('i',$id);

/* execute query */
$stmt->execute();

/* Get the result */
$result = $stmt->get_result();

/* Get the number of rows */
$num_of_rows = $result->num_rows;

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>';
}

Avantages de get_result :

  • Retours associatifs/ tableau ou objet énuméré automatiquement rempli de données
  • Permet à la méthode fetch_all() de renvoyer toutes les lignes renvoyées à une fois

Inconvénients de get_result :

  • Nécessite un pilote natif MySQL (mysqlnd)

Conclusion

Le choix entre bind_result et get_result dépend des exigences spécifiques de la demande. bind_result offre précision et contrôle sur les données de résultat, mais peut s'avérer fastidieux pour les structures de données dynamiques. get_result offre flexibilité et commodité, mais peut ne pas être pris en charge dans les anciennes versions de PHP. Comprendre les avantages et les limites de chaque méthode permet aux développeurs de prendre des décisions éclairées lors du traitement des résultats des 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