Manuel PHP
Précédent |  | Suivant

# LXV. 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://dev.mysql.com/doc/.

# Pré-requis

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

# Installation

En utilisant l'option `--with-mysql[=DIR]`, vous activez le support MySQL en `PHP`

En `PHP` 4, l'option `--with-mysql` est activée par défaut. Pour désactiver ce comportement par défaut, vous devez utiliser l'option `--without-mysql`. De même, en `PHP` 4, si vous activez MySQL sans spécifier de chemin jusqu'au dossier d'installation MySQL, `PHP` va utiliser la bibliothèque cliente fournie dans la distribution `PHP`. Sous Windows, il n'y a pas de `DLL`, car MySQL est simplement intégré dans `PHP` Les utilisateurs qui utilisent d'autres applications qui utilisent MySQL (par exemple, auth-mysql) ne doivent pas utiliser la bibliothèque intégrée, mais plutôt spécifier `--with-mysql=/path/to/mysql`. Cela va forcer `PHP` à utiliser les bibliothèques clientes installées par MySQL, et évitera les conflits.

En `PHP` 5, MySQL n'est plus activé par défaut, et la bibliothèque MysQL n'est plus fournie avec `PHP`. Lisez la FAQ pour savoir pourquoi.

Cette extension MySQL extension ne fonctionnera pas avec les versions de MySQL supérieure à la version 4.1.0. Pour cela, il faut utiliser l'extension MySQLi.

Si vous voulez installer l'extension mysqli en même temps que l'extension mysql, vous devez utiliser la même bibliothèque client, pour éviter les conflits.

Avertissement
Des crashes et des problèmes de démarrage de `PHP` peuvent être rencontré lorsque vous chargez cette fonction en même temps que l'extension recode. Voyez l'extension recode pour plus de détails.

> Note : Si vous avez besoin d'autres jeux de caractères que celui par défaut (latin), vous devez installer la librairie externe libmysql (non fournie), compilée avec ce jeu de caractères.

# Configuration à l'exécution

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

Tableau 1. Options de configuration

Nom | Par défaut | Modifiable
--- | --- | ---
mysql.allow_persistent | "On" | PHP_INI_SYSTEM
mysql.max_persistent | "-1" | PHP_INI_SYSTEM
mysql.max_links | "-1" | PHP_INI_SYSTEM
mysql.default_port | NULL | PHP_INI_ALL
mysql.default_socket | NULL | PHP_INI_ALL
mysql.default_host | NULL | PHP_INI_ALL
mysql.default_user | NULL | PHP_INI_ALL
mysql.default_password | NULL | PHP_INI_ALL
mysql.connect_timeout | "0" | PHP_INI_SYSTEM

Pour plus de détails sur les constantes PHP_INI_*, reportez-vous à ini_set().

Voici un éclaircissement sur l'utilisation des directives de configuration.

`mysql.allow_persistent` bool

  Active ou désactive les connexions persistantes à la base de données MySQL.

`mysql.max_persistent` integer

  Le nombre maximum de connexions persistantes aux bases de données MySQL, par processus.

`mysql.max_links` integer

  Le nombre maximum de connexions aux bases de données MySQL, y compris les connexions persistantes, par processus.

`mysql.default_port` string

  Le numéro de port TCP par défaut, utilisé pour se connecter à la base de données, lorsqu'aucun port n'est spécifié. Si aucun port par défaut est spécifié, le port sera alors obtenu en lisant la variable d'environnement `MYSQL_TCP_PORT`, l'entrée `mysql-tcp` dans le fichier `/etc/services` ou encore la constante de compilation `MYSQL_PORT`, dans cet order. Win32 n'utilisera aussi que la constante `MYSQL_PORT`.

`mysql.default_socket` string

  Le nom par défaut de la socket lorsque l'on se conecte au serveur local, si aucune autre socket n'est spécifiée.

`mysql.default_host` string

  Adresse par défaut du serveur, à utiliser lors de la connexion à un serveur MySQL, si aucun hôte n'est spécifié. Ne s'applique par lorsque le safe mode est activé.

`mysql.default_user` string

  Utilisateur par défaut, à utiliser lors de la connexion à un serveur MySQL, si aucun utilisateur n'est spécifié. Ne s'applique par lorsque le safe mode est activé.

`mysql.default_password` string

  Mot de passe par défaut, à utiliser lors de la connexion à un serveur MySQL, si aucun mot de passe n'est spécifié. Ne s'applique par lorsque le safe mode est activé.

`mysql.connect_timeout` integer

  Durée maximale d'attente de la réponse d'un serveur, en secondes. Sous Linux, cette durée sert aussi lors de l'échange du premier avec le serveur.

# Types de ressources

Il y a deux types de ressources utilisées par le module MySQL. Le premier est un identifiant de connexion au serveur, appelé `mysql link`, et le second est un identifiant de résultat de requête, appelé `mysql result`.

# 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.

Depuis `PHP` 4.3.0, il est possible de spécifier des options de client supplémentaires pour les fonctions mysql_connect() et mysql_pconnect(). Ces constantes sont les suivantes :

Tableau 2. Constantes client MySQL

Constante | Description
--- | ---
MYSQL_CLIENT_COMPRESS | Utilise le protocole avec compression
MYSQL_CLIENT_IGNORE_SPACE | Autorise les espaces après les noms de fonction
MYSQL_CLIENT_INTERACTIVE | Autorise interactive_timeout secondes d'inactivité sur la connexion (au lieu de wait_timeout).

La fonction mysql_fetch_array() utilise une constante pour spécifier les différents types de formats de réponse. Les constantes suivantes sont utilisées :

Tableau 3. Constantes de mysql_fetch_array()

Constante | Description
--- | ---
MYSQL_ASSOC | Les colonnes sont retournées dans un tableau, dont les index sont les noms de colonnes.
MYSQL_BOTH | Les colonnes sont retournées dans un tableau ayant une indexation numérique et un système d'index correspondant au nom des colonnes.
MYSQL_NUM | Les colonnes sont retournées dans un tableau avec un index numérique. Les colonnes sont numérotées dans leur ordre d'apparition. L'index commence à zéro.

# 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élection de la base */
$link = mysql_connect("mysql_hote", "mysql_utilisateur", "mysql_mot_de_passe")
or die("Impossible de se connecter");
echo "Connexion réussie";
mysql_select_db("my_database") or die("Could not select database");
/* Exécuter des requêtes SQL */
$query = "SELECT * FROM my_table";
$result = mysql_query($query) or die("Query failed");
/* Afficher des résultats en HTML */
echo "<table>\n";
while ($line = mysql_fetch_assoc($result)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
/* Libération des résultats */
mysql_free_result($result);
/* Fermeture de la connexion */
mysql_close($link);
?>`

Précédent | Sommaire | Suivant
msql | Niveau supérieur | mysql_affected_rows