LXIII. MySQL

Introduction

Ces fonctions vous permettent d'accéder aux bases de données MySQL. Le site officiel de cette base est http://www.mysql.com/.

La documentation de MySQL est disponible à http://www.mysql.com/documentation/.

Pré-requis

Afin de pouvoir les utiliser, vous devez compiler PHP avec le support MySQL.

Installation

By using the --with-mysql[=DIR] configuration option you enable PHP to access MySQL databases. If you use this option without specifying the path to MySQL, PHP will use the built-in MySQL client libraries. With PHP 4 MySQL support is always enabled; if you don't specify the configure option, the bundled libraries are used. Users who run other applications that use MySQL (for example, running PHP 3 and PHP 4 as concurrent apache modules, or auth-mysql) should always specify the path to MySQL: --with-mysql=/path/to/mysql. This will force PHP to use the client libraries installed by MySQL, avoiding any conflicts.

La version windows de PHP dispose du support automatique de cette extension. Vous n'avez pas à ajouter de librairie supplémentaire pour disposer de ces fonctions.

Avertissement

Crashes and startup problems of PHP may be encountered when loading this extension in conjunction with the recode extension. See the recode extension for more information.

Configuration à l'exécution

Le comportement de ces fonctions est affecté par la configuration dans le fichier php.ini.

Tableau 1. MySQL Configuration Options

NameDefaultChangeable
mysql.allow_persistent"On"PHP_INI_SYSTEM
mysql.max_persistent"-1"PHP_INI_SYSTEM
mysql.max_links"-1"PHP_INI_SYSTEM
mysql.default_portNULLPHP_INI_ALL
mysql.default_socketNULLPHP_INI_ALL
mysql.default_hostNULLPHP_INI_ALL
mysql.default_userNULLPHP_INI_ALL
mysql.default_passwordNULLPHP_INI_ALL
mysql.connect_timeout"0"PHP_INI_SYSTEM
For further details and definition of the PHP_INI_* constants see ini_set().

Here is a short explanation of the configuration directives.

mysql.allow_persistent boolean

Whether to allow persistent connections to MySQL.

mysql.max_persistent integer

The maximum number of persistent MySQL connections per process.

mysql.max_links integer

The maximum number of MySQL connections per process, including persistent connections.

mysql.default_port string

The default TCP port number to use when connecting to the database server if no other port is specified. If no default is specified, the port will be obtained from the MYSQL_TCP_PORT environment variable, the mysql-tcp entry in /etc/services or the compile-time MYSQL_PORT constant, in that order. Win32 will only use the MYSQL_PORT constant.

mysql.default_socket string

The default socket name to use when connecting to a local database server if no other socket name is specified.

mysql.default_host string

The default server host to use when connecting to the database server if no other host is specified. Doesn't apply in safe mode.

mysql.default_user string

The default user name to use when connecting to the database server if no other name is specified. Doesn't apply in safe mode.

mysql.default_password string

The default password to use when connecting to the database server if no other password is specified. Doesn't apply in safe mode.

mysql.connect_timeout integer

Connect timeout in seconds. On Linux this timeout is also used for waiting for the first answer from the server.

Types de ressources

There are two resource types used in the MySQL module. The first one is the link identifier for a database connection, the second a resource which holds the result of a query.

Constantes Prédefinies

Ces constantes sont définies par cette extension, et ne sont disponibles que si cette extension a été compilée avec PHP, ou bien chargée au moment de l'exécution.

Since PHP 4.3.0 it is possible to specify additional client flags for the mysql_connect() and mysql_pconnect() functions. The following constants are defined:

Tableau 2. MySQL client constants

constantdescription
MYSQL_CLIENT_COMPRESSuse compression protocol
MYSQL_CLIENT_IGNORE_SPACEAllow space after function names
MYSQL_CLIENT_INTERACTIVEAllow interactive_timeout seconds (instead of wait_timeout) of inactivity before closing the connection.

The function mysql_fetch_array() uses a constant for the different types of result arrays. The following constants are defined:

Tableau 3. MySQL fetch constants

constantdescription
MYSQL_ASSOC Columns are returned into the array having the fieldname as the array index.
MYSQL_BOTH Columns are returned into the array having both a numerical index and the fieldname as the array index.
MYSQL_NUM Columns are returned into the array having a numerical index to the fields. This index starts with 0, the first field in the result.

Exemples

Cet exemple simple montre comment se connecter, exécuter une requête, lire les informations obtenues et se déconnecter d'une base de données MySQL.

Exemple 1. Exemple de présentation de l'extension MySQL

<?php
    /* Connexion et s&eacute;lection de la base */
    $link = mysql_connect("mysql_host", "mysql_user", "mysql_password")
        or die("Could not connect");
    print "Connected successfully";
    mysql_select_db("my_database") or die("Could not select database");

    /* Ex&eacute;cuter des requ&ecirc;tes SQL */
    $query = "SELECT * FROM my_table";
    $result = mysql_query($query) or die("Query failed");

    /* Afficher des r&eacute;sultats en HTML */
    print "<table>\n";
    while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) {
        print "\t<tr>\n";
        foreach ($line as $col_value) {
            print "\t\t<td>$col_value</td>\n";
        }
        print "\t</tr>\n";
    }
    print "</table>\n";

    /* Lib&eacute;ration des r&eacute;sultats */
    mysql_free_result($result);

    /* Fermeture de la connexion */
    mysql_close($link);
?>

Table des matières
mysql_affected_rows --  Retourne le nombre de lignes affectées lors de la dernière requête SQL
mysql_change_user -- Change le nom de session de l'utilisateur actif
mysql_client_encoding -- Returns the name of the character set
mysql_close -- Ferme la connexion MySQL
mysql_connect -- Ouvre une connexion à un serveur MySQL
mysql_create_db -- Crée une base de données MySQL
mysql_data_seek -- Déplace le pointeur interne de résultat
mysql_db_name -- Lit les noms des bases de données
mysql_db_query -- Envoie une requête MySQL à un serveur MySQL
mysql_drop_db -- Efface une base de données MySQL
mysql_errno --  Retourne le numéro d'erreur de la dernière commande MySQL
mysql_error --  Retourne le texte associé avec l'erreur générée lors de la dernière requête.
mysql_escape_string --  Protège une chaîne pour la passer à mysql_query()
mysql_fetch_array --  Retourne une ligne de résultat sous la forme d'un tableau associatif
mysql_fetch_assoc --  Lit une ligne de résultats dans un tableau associatif
mysql_fetch_field --  Retourne les données enregistrées dans une colonne sous forme d'objet.
mysql_fetch_lengths --  Retourne la taille de chaque colonne d'une ligne de résultat
mysql_fetch_object -- Retourne une ligne de résultat MySQL sous la forme d'un objet
mysql_fetch_row -- Retourne une ligne de résultat MySQL sous la forme d'un tableau
mysql_field_flags --  Retourne des détails sur une colonne MySQL
mysql_field_len -- Retourne la taille d'un champs de résultat MySQL
mysql_field_name --  Retourne le nom d'une colonne
mysql_field_seek --  Déplace le pointeur de résultat
mysql_field_table --  Retourne le nom de la table où se trouve une colonne
mysql_field_type -- Retourne le type de la colonne courante
mysql_free_result -- Efface le résultat de la mémoire
mysql_get_client_info -- Lit les informations sur le client MySQL
mysql_get_host_info -- Lit les informations sur l'hôte MySQL
mysql_get_proto_info -- Lit les informations sur le protocole MySQL
mysql_get_server_info -- Lit les informations sur le serveur MySQL
mysql_info --  Get information about the most recent query
mysql_insert_id --  Retourne l'identifiant généré par la dernière requête INSERT.
mysql_list_dbs --  Liste les bases de données disponibles sur le serveur MySQL
mysql_list_fields -- Liste les champs du résultat MySQL
mysql_list_processes -- List MySQL processes
mysql_list_tables -- Liste les tables d'une base de données
mysql_num_fields -- Retourne le nombre de champs d'un résultat MySQL
mysql_num_rows -- Retourne le nombre de lignes d'un résultat
mysql_pconnect --  Ouvre une connexion persistante à un serveur MySQL.
mysql_ping -- Ping a server connection or reconnect if there is no connection
mysql_query -- Envoie une requête SQL à un serveur MySQL
mysql_real_escape_string --  Escapes special characters in a string for use in a SQL statement, taking into account the current charset of the connection.
mysql_result -- Retourne un champs d'un résultat
mysql_select_db -- Sélectionne une base de données MySQL
mysql_stat -- Get current system status
mysql_tablename -- Lit le nom de la table qui contient un champs
mysql_thread_id -- Return the current thread ID
mysql_unbuffered_query --  Exécute une requête SQL sans mobiliser les résultats