MYSQL_RES *mysql_use_result(MYSQL *mysql)
Description
Vous devez appeler mysql_store_result()
ou
mysql_use_result()
pour chaque requête qui
récupère des données avec succès
(SELECT
, SHOW
,
DESCRIBE
, EXPLAIN
).
mysql_use_result()
initialise un jeu de
résultats mais ne l'enregistre pas dans le client comme le
fait mysql_store_result()
. A la place,
chaque ligne doit être récupéré manuellement à l'aide de
la commande mysql_fetch_row()
. Cela lit le
résultat directement à partir du serveur sans l'enregistrer
dans une table temporaire ou un tampon local, ce qui est plus
rapide et utilise moins de mémoire que
mysql_store_result()
. Le client n'allouera
de la mémoire que pour la ligne courante et un tampon de
communication qui peut aller jusqu'à
max_allowed_packet
octets.
D'une autre côté, vous ne devez pas utiliser
mysql_use_result()
si vous faites beaucoup
de traitements pour chaque ligne côté client, ou que le
résultat est envoyé à un écran où l'utilisateur peut
entrer ^S
(arrêt défilement). Cela
bloquera le serveur et empêchera les autres threads de mettre
à jour n'importe quelle table à partir de laquelle les
données sont lues.
Lors de l'utilisation de
mysql_use_result()
, vous devez exécuter
mysql_fetch_row()
jusqu'à ce que
NULL
soit retourné, sinon, les lignes non
retournée seront inclues dans le jeu de résultat de votre
prochaine requête. L'API C donnera l'erreur Commands
out of sync; you can't run this command now
si vous
oubliez de le faire !
Vous ne devez pas utiliser
mysql_data_seek()
,
mysql_row_seek()
,
mysql_row_tell()
,
mysql_num_rows()
, ou
mysql_affected_rows()
avec un résultat
retourné par mysql_use_result()
, de même,
vous ne devez pas exécuter d'autres requêtes tant que la
commande mysql_use_result()
n'est pas
terminée. (Toutefois, après avoir récupéré toutes les
lignes, mysql_num_rows()
retournera
correctement le nombre de lignes récupérées.)
Vous devez appeler mysql_free_result()
lorsque vous n'avez plus besoin du jeu de résultats.
Valeur de retour
Une structure de résultat MYSQL_RES
.
NULL
si une erreur survient.
Erreurs
CR_COMMANDS_OUT_OF_SYNC
Les commandes n'ont pas été exécutées dans le bon ordre.
CR_OUT_OF_MEMORY
Plus de mémoire.
CR_SERVER_GONE_ERROR
Le serveur MySQL ne réponds pas.
CR_SERVER_LOST
La connexion au serveur a été perdue au cours la requête.
CR_UNKNOWN_ERROR
Une erreur inconnue s'est produite.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.