| 21.2.3 Description des fonctions de l'API C
 21.2 API MySQL C
 21 API MySQL
 Manuel de Référence MySQL 4.1 : Version Française
 
 . mysql_affected_rows()
 . mysql_change_user()
 . mysql_character_set_name()
 . mysql_close()
 . mysql_connect()
 . mysql_create_db()
 . mysql_data_seek()
 . mysql_debug()
 . mysql_drop_db()
 . mysql_dump_debug_info()
 . mysql_eof()
 . mysql_errno()
 . mysql_error()
 . mysql_escape_string()
 . mysql_fetch_field()
 . mysql_fetch_fields()
 . mysql_fetch_field_direct()
 . mysql_fetch_lengths()
 . mysql_fetch_row()
 . mysql_field_count()
 . mysql_field_seek()
 . mysql_field_tell()
 . mysql_free_result()
 . mysql_get_client_info()
 . mysql_get_client_version()
 . mysql_get_host_info()
 . mysql_get_proto_info()
 . mysql_get_server_info()
 . mysql_get_server_version()
 . mysql_info()
 . mysql_init()
 . mysql_insert_id()
 . mysql_kill()
 . mysql_list_dbs()
 . mysql_list_fields()
 . mysql_list_processes()
 . mysql_list_tables()
 . mysql_num_fields()
 . mysql_num_rows()
 . mysql_options()
 . mysql_ping()
 . mysql_query()
 ->mysql_real_connect()
 . mysql_real_escape_string()
 . mysql_real_query()
 . mysql_reload()
 . mysql_row_seek()
 . mysql_row_tell()
 . mysql_select_db()
 . mysql_set_server_option()
 . mysql_shutdown()
 . mysql_sqlstate()
 . mysql_ssl_set()
 . mysql_stat()
 . mysql_store_result()
 . mysql_thread_id()
 . mysql_use_result()
 . mysql_warning_count()
 . mysql_commit()
 . mysql_rollback()
 . mysql_autocommit()
 . mysql_more_results()
 . mysql_next_result()
 
 
 | 
  21.2.3.43 mysql_real_connect()  
 
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
                 const char *user, const char *passwd, const char *db,
                 unsigned int port, const char *unix_socket,
                 unsigned long client_flag)
Description
 
mysql_real_connect()
  essaye de se connecter à une base de données MySQL
tournant sur l'hôte.
 
mysql_real_connect()
  doit se terminer correctement avant que vous ne puissiez
aucune autre fonction de l'API, à l'exception de  
mysql_get_client_info()
 . 
Les paramètres sont spécifiés comme suit :
 
Valeur de retour
 
Un gestionnaire de connexion  
MYSQL*
  si la connexion a réussi, 
 
NULL
  si elle a échoué. Pour une connexion à succès, la valeur
de retour est la même que la valeur du premier paramètre. 
Erreurs
Le premier paramètre doit être l'adresse d'une structure  
MYSQL
 
existante. Avant d'appeler  
mysql_real_connect()
  vous devez appeler 
 
mysql_init()
  pour initialiser la structure  
MYSQL
 . Vous pouvez
changer un tas d'options de connexion en appelant  
mysql_options()
 .
 
mysql_options()
 .
La valeur de  
host
  peut être un nom de domaine ou une adresse IP. Si 
 
host
  est  
NULL
  ou égal à la chaîne  
"localhost"
 , une connexion
à la machine local est essayée. Si le système supporte les sockets (Unix) ou les 
tunnels nommés (Windows), elles sont utilisées au lieu de TCP/IP pour se connecter
au serveur.
La paramètre  
user
  contient l'identifiant MySQL de l'utilisateur. Si  
user
 
est  
NULL
 , l'utilisateur courant est sous-entendu. Avec Unix c'est l'utilisateur
courant. Avec Windows ODBC, le nom de l'utilisateur courant doit être spécifié
explicitement.
 Configuring a MyODBC DSN on Windows .
La paramètre  
passwd
  contient le mot de passe de  
user
 . Si  
passwd
 
est  
NULL
 , seules les entrées de la table  
user
  pour l'utilisateur ayant
un champ vide seront testées. Cela permet à l'administrateur de mettre en place le système
de privilèges MySQL de façon à ce que les utilisateurs aient divers privilèges selon qu'ils
aient spécifié ou pas de mot de passe.Note : N'essayez pas d'encrypter le mot de passe avant l'appel à  
mysql_real_connect()
 ;
l'encryptage du mot de passe est gérée automatiquement par l'API du client.
db
  est le nom de la base de données.
Si  
db
  n'est pas  
NULL
 , la connexion changera la base par défaut
en cette valeur.
Si  
port
  est différent de 0, sa valeur sera utilisé comme port de connexion
TCP/IP. Notez que le paramètre  
host
  détermine le type de la connexion.
Si  
unix_socket
  n'est pas  
NULL
 , la chaîne spécifie la socket ou le tunnel
nommé à utiliser. Notez que le paramètre  
host
  détermine le type de la connexion.
La valeur de  
client_flag
  est habituellement 0, mais peut être la combinaison
des options suivantes dans des circonstances très spéciales : 
| Nom de l'option | Description |  
| CLIENT_COMPRESS | Utilise le protocole compressé. |  
| CLIENT_FOUND_ROWS | Retourne le nombre de lignes trouvées, et non de lignes affectées. |  
| CLIENT_IGNORE_SPACE | Autorise les espaces après les noms de fonctions. Rend tous les noms de fonctions des mots réservés. |  
| CLIENT_INTERACTIVE | Autorise 
interactive_timeout
 secondes (au lieu de 
wait_timeout
 secondes) d'innactivité avant de fermer la connexion. |  
| CLIENT_LOCAL_FILES | Active le support de 
LOAD DATA LOCAL
. |  
| CLIENT_MULTI_STATEMENTS | Indique au serveur que le client peut envoyer des requêtes multiples (séparées par des 
';'
). Si cette option n'est pas configurée, les commandes multiples sont désactivées. Nouveau en 4.1. |  
| CLIENT_MULTI_RESULTS | Indique au serveru que le client peut gérer des jeux de résultats multiples, issus de commandes multiples, ou de procédures stockées. C'est automatique si l'option 
CLIENT_MULTI_STATEMENTS
 est active. Nouveau en 4.1. |  
| CLIENT_NO_SCHEMA | N'autorise pas la syntaxe 
db_name.tbl_name.col_name
. Cela est fait pour ODBC. Il fait génèrer une erreur à l'analyseur si vous utilisez cette syntaxe, ce qui peut se réveler fort utile pour la chasse aux bogues dans les programmes ODBC. |  
| CLIENT_ODBC | Le client est un client ODBC. Cela rend 
mysqld
 plus accueillant vis à vis de ODBC. |  
| CLIENT_SSL | Utilise SSL (protocole encrypté). |  
Exemple
     CR_CONN_HOST_ERROR
    
      Impossible de se connecter au serveur MySQL.
      
     CR_CONNECTION_ERROR
    
      Impossible de se connecter au serveur MySQL local.
      
     CR_IPSOCK_ERROR
    
      Impossible de créer une socket IP.
      
     CR_OUT_OF_MEMORY
    
      Plus de mémoire.
      
     CR_SOCKET_CREATE_ERROR
    
      Impossible de créer une socket UNIX.
      
     CR_UNKNOWN_HOST
    
      Impossible de trouver l'adresse IP de l'hôte.
      
     CR_VERSION_ERROR
    
      Une disparité de protocole a résulté de la tentative de connexion à un serveur avec
une bibliothèque de client qui utilise une version différente du protocole. Cela peut
arriver si vous utilisez une très vieille bibliothèque cliente pour vous connecter à un
serveur qui n'a pas été démarré avec l'option  
--old-protocol
 .
      
     CR_NAMEDPIPEOPEN_ERROR
    
      Impossible de créer un tunnel nommé sur Windows.
      
     CR_NAMEDPIPEWAIT_ERROR
    
      Impossible d'attendre un tunnel nommé sur Windows.
      
     CR_NAMEDPIPESETSTATE_ERROR
    
      Impossible d'obtenir un gestionnaire de tunnel sur Windows.
      
     CR_SERVER_LOST
    
      Si  
connect_timeout
  > 0 et qu'il a fallu plus de  
connect_timeout
 
secondes pour se connecter au serveur, ou que celui-ci n'a plus répondu durant
l'exécution de  
init-command
 .
      En utilisant  
mysql_options()
  la bibliothèque MySQL lira les sections 
 
[client]
  et  
[your_prog_name]
  dans le fichier  
my.cnf
 
ce qui assurera le bon fonctionnement de votre programme, même si quelqu'un
a configuré MySQL d'une façon non-standard.| 
MYSQL mysql;
 mysql_init(&mysql);
 mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name");
 if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
 {
 fprintf(stderr, "Impossible de se connecter à la base de données, erreur : %s\n",
 mysql_error(&mysql));
 }
 | 
 
Notez que pendant la connexion,  
mysql_real_connect()
  configure l'option
 
reconnect
  (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 déconnexion,
d'essayer de se reconnecter au serveur avant d'abandonner.
 |