|
|
LXV. MySQL
Afin de pouvoir les utiliser, vous devez compiler PHP avec le support
MySQL.
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.
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.
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.
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.
|
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); ?>
|
|
|