Services webmasters
Partenaires
Jeux concours gratuits
 
Types de données de l'API C
<<<
Vue d'ensemble des fonctions de l'API C Description des fonctions de l'API C
>>>

8.4 Interface C pour MySQL
8 Les interfaces pour MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Types de données de l'API C
->Vue d'ensemble des fonctions de l'API C
Description des fonctions de l'API C
Description des fonctions threadées de C
Description des fonctions C du serveur embarqué
Questions courantes sur la librairie C
Compiler les clients
Comment faire un client MySQL threadé
libmysqld, la librairie du serveur embarqué MySQL

8.4.2 Vue d'ensemble des fonctions de l'API C

Les fonctions disponibles dans l'API C sont listées ici et décrites en plus de détails dans la section suivante. Description des fonctions de l'interface C .
Fonction Description
mysql_affected_rows() Retourne le nombre de lignes changées/effacées/insérés par le dernier UPDATE , DELETE , ou INSERT .
mysql_change_user() Change l'utilisateur et la base de données pour une connexion ouverte.
mysql_character_set_name() Retourne le nom du jeu de caractère de la connexion.
mysql_close() Ferme une connexion au serveur.
mysql_connect() Connecte à un serveur MySQL. Cette fonction est désapprouvée; utilisez mysql_real_connect() à la place.
mysql_create_db() Crée une base de données. Cette fonction est désapprouvée, utilisez plutôt la commande SQL CREATE DATABASE .
mysql_data_seek() Déplace le pointeur vers une ligne arbitraire dans le jeu de résultats de la requête.
mysql_debug() Effectue un DBUG_PUSH avec la chaîne donnée.
mysql_drop_db() Supprime une base de données. Cette fonction est désapprouvée, utilisez plutôt la commande SQL DROP DATABASE .
mysql_dump_debug_info() Demande au serveur d'écrire les informations de débogage dans un fichier de log.
mysql_eof() Détermine si la dernière ligne du jeu de résultats a été lue ou non. Cette fonction est désapprouvée, vous pouvez utiliser mysql_errno() ou mysql_error() à la place.
mysql_errno() Retourne le numéro de l'erreur de la fonction appelée en dernier.
mysql_error() Retourne le message d'erreur de la dernière fonction MySQL appelée.
mysql_escape_string() Protège une chaîne en échappant les caractères spéciaux.
mysql_fetch_field() Retourne le type du champ suivant dans la table.
mysql_fetch_field_direct() Retourne le type d'une colonne, étant donné un numéro de champ.
mysql_fetch_fields() Retourne un tableau avec toutes les structures de champs.
mysql_fetch_lengths() Retourne la longueur de toutes les colonnes dans la ligne suivante.
mysql_fetch_row() Récupère la ligne suivante dans le jeu de résultats.
mysql_field_seek() Place le curseur de colonne sur une colonne précise.
mysql_field_count() Retourne le nombre de colonnes dans le résultat pour la requête la plus récente.
mysql_field_tell() Retourne la position du curseur de champs utilisé pour le dernier appel à mysql_fetch_field() .
mysql_free_result() Libère la mémoire utilisée par un jeu de résultats.
mysql_get_client_info() Retourne la version du client.
mysql_get_host_info() Retourne une chaîne décrivant la connexion.
mysql_get_proto_info() Retourne la version du protocole utilisé par la connexion.
mysql_get_server_info() Retourne la version du serveur.
mysql_info() Retourne des informations à propos de la requête la plus récente.
mysql_init() Récupère ou initialise une structure MYSQL .
mysql_insert_id() Retourne l'identifié généré pour une colonne AUTO_INCREMENT par la dernière requête.
mysql_kill() Termine un processus donné.
mysql_list_dbs() Retourne les noms des bases de données répondant à une expression régulière simple.
mysql_list_fields() Retourne les noms des champs répondants à une expression régulière simple.
mysql_list_processes() Retourne une liste des processus courants du serveur.
mysql_list_tables() Retourne les noms des tables répondants à une expression régulière simple.
mysql_num_fields() Retourne le nombre de colonnes dans un jeu de résultats.
mysql_num_rows() Retourne le nombre de lignes dans le jeu de résultats.
mysql_options() Configure les options de connexion pour mysql_connect() .
mysql_ping() Vérifie si la connexion au serveur a toujours lieu. Reconnecte si besoin.
mysql_query() Exécute une requête SQL spécifée en tant que chaîne terminée par un caractère nul.
mysql_real_connect() Connecte à un serveur MySQL.
mysql_real_escape_string() Protège les caractères spéciaux dans une chaîne utilisable dans une requête SQL, en prenant en compte le jeu de caractères courant de la connexion.
mysql_real_query() Exécute une requête SQL spécifiée en tant que chaîne comptée.
mysql_reload() Demande au serveur de recharger la table des droits.
mysql_row_seek() Déplace le pointeur vers un ligne dans le jeu de résultats, en utilisant une valeur retournée par mysql_row_tell() .
mysql_row_tell() Retourne la position du curseur de lignes.
mysql_select_db() Sélectionne une base de données.
mysql_shutdown() Termine le serveur de base de données.
mysql_stat() Retourne le statut du serveur dans une chaîne.
mysql_store_result() Récupère le jeu de résulats complet dans le client.
mysql_thread_id() Retourne l'identifiant du thread courant.
mysql_thread_safe() Retourne 1 si le client est compilé en tant que thread-safe.
mysql_use_result() Initialise une récupération ligne par ligne des résultats.

Pour vous connecter au serveur, appelez mysql_init() pour initialiser un gestionnaire de connexion, puis appelez mysql_real_connect() avec ce gestionnaire (avec d'autres informations tel que l'hôte, l'utilisateur et le mot de passe). Lors de la connexion, mysql_real_connect() définit l'option reconnect (quit fait partie de la structure MYSQL) à 1 . Cette option indique, dans le cas où une requête ne peut être exécutée à cause d'une perte de connexion, d'essayer de se reconnecter au serveur avant d'abandonner. Lorsque vous n'avez plus besoin de la connexion, appelez mysql_close() pour la clore.

Tant qu'une connexion est active, le client envoi des requêtes SQL au serveur à l'aide de mysql_query() ou mysql_real_query() . La différence entre les deux est que mysql_query() s'attend à ce que la requête soit spécifiée en tant que chaîne terminée par la chaîne nulle, tandis que mysql_real_query() attend une chaîne de longueur connue. Si la chaîne contient des données binaires (incluant l'octet nul), vous devez utiliser mysql_real_query() .

Pour chaque requête non-sélective (par exemple, INSERT , UPDATE , DELETE ), vous pouvez trouver combien de lignes ont été mises à jour (affectées) en appelant mysql_affected_rows() .

Pour les requêtes SELECT , vous récupérez les lignes sélectionnées dans un jeu de résultat. (Notez que quelques commandes ont le même comportement que SELECT , dans le sens où elle renvoient des lignes. Cela inclut SHOW , DESCRIBE , et EXPLAIN . Elles doivent être traitées de la même façon que les requêtes SELECT .)

Il y'a deux façons pour un client de gérer les jeux de résultats. Une méthode consiste à récupérer le jeu de résultat en entier et en une seule fois en appelant mysql_store_result() . Cette fonction obtient toutes les lignes retournées par la requête et les stocke dans le client. La seconde méthode consiste à initialiser une récupération ligne-par-ligne du jeu de résultats en appelant mysql_use_result() . Cette fonction initie la récupération, mais ne récupère actuellement aucune ligne à partir du serveur.

Dans les deux cas, vous accédez aux ligne en appelant mysql_fetch_row() . Avec mysql_store_result() , mysql_fetch_row() accède aux lignes qui ont déjà été récupérées à partir du serveur. Avec mysql_use_result() , mysql_fetch_row() récupère actuellement la ligne à partir du serveur. Les informations à propos de la taille des données dans chaque ligne est disponible en appelant mysql_fetch_lengths() .

Après avoir fini de traiter le jeu de résultats, appelez mysql_free_result() pour libérer la mémoire utilisée.

Les deux mécanismes de récupération sont complémentaires. Les programmes clients doivent utiliser l'approche qui leur convient le mieux. En pratique, les clients tendent plus à utiliser mysql_store_result() .

Un avantage de mysql_store_result() est que puisque toutes les lignes ont été récupérées dans le client, vous ne pouvez pas que accéder aux lignes séquentiellement, vous pouvez revenir en arrière ou avancer dans le jeu de résultats en utilisant mysql_data_seek() ou mysql_row_seek() pour changer la position de la ligne courante dans le jeu de résultats. Vous pouvez aussi trouver le nombre total des lignes en appelant mysql_num_rows() . D'un autre côté, les besoins en mémoire de mysql_store_result() peuvent être très grands pour les grands jeux de résultats et vous aurez des chances de rencontrer des conditions out-of-memory.

Un avantage de mysql_use_result() est que le client a besoinde moins de mémoire pour le jeu de résultats car il utilise une ligne à la fois (et puisque il y'a moins de pertes de mémoire, mysql_use_result() peut être plus rapide). Les inconvénients sont que vous devez récupérer chaque ligne rapidement pour éviter de bloquer le serveur, vous n'avez pas d'accès aléatoires aux lignes dans le jeu de résultats (vous ne pouvez accéder aux lignes que séquentiellement), et vous ne savez pas combien de lignes comporte le jeu de résultats tant que vous ne les avez pas toutes récupérées. De plus, vous devez récupérer toutes les lignes même si vous trouvez entre-temps l'informations que vous cherchiez.

L'API permet aux clients de gérer correctement les requêtes (récupérant les lignes seulement en cas de besoin) sans savoir si la requête était un SELECT ou non. Vous pouvez faire cela en appelant mysql_store_result() après chaque mysql_query() (ou mysql_real_query() ). Si l'appel au jeu de résultats réussi, la requête était un SELECT et vous pouvez lire les lignes. Sinon, appelez mysql_field_count() pour vérifier si un résultat aurait du être retourné. Si mysql_field_count() retourne zéro, la requête n'a pas retourné de données (cela indique que c'était un INSERT , UPDATE , DELETE , etc.), et ne devait pas retourner de lignes. Si mysql_field_count() est non-nul, la requête aurait du retourner des lignes, mais ne l'a pas fait. Cela indique que la requête était un SELECT qui a échoué. Reportez vous à la description de mysql_field_count() pour un exemple d'utilisation.

mysql_store_result() et mysql_use_result() vous permettent d'obtenir des informations à propos des champs qui constituent le jeu de résultat (le nombre de champs, leurs noms et types, etc.). Vous pouvez accéder aux informations du champ séquentiellement dans une ligne en appelant plusieurs fois mysql_fetch_field() , ou avec le numéro du champ dans la ligne en appelant mysql_fetch_field_direct() . La position courante du pointeur de champ peut être changée en appelant mysql_field_seek() . Changer le pointeur de champ affecte les appels suivants à mysql_fetch_field() . Vous pouvez aussi obtenir en une seule fois les informations sur les champs en appelant mysql_fetch_fields() .

Pour détecter les erreurs, MySQL fournit un accès aux informations des erreurs via les fonctions mysql_errno() et mysql_error() . Elles retournent le code de l'erreur et le message pour la dernière fonction invoquée qui aurait pu réussir ou échouer, vous permettant ainsi de déterminer les erreurs et leurs causes.

<< Vue d'ensemble des fonctions de l'API C >>
Types de données de l'API C Interface C pour MySQL Description des fonctions de l'API C
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -