MySQL
Introduction
Ces fonctions vous permettent d'accéder aux bases de données MySQL. Le site officiel de cette base est » https://www.mysql.com/.
La documentation de MySQL est disponible à » https://dev.mysql.com/doc/.
Pré-requis
Afin de pouvoir les utiliser, vous devez compiler PHP avec le support MySQL.
Installation
Pour compiler, utilisez tout simplement l'option de configuration --with-mysql[=DIR] où le paramètre optionnel [DIR] pointe vers le dossier d'installation de MySQL.
Bien que cette extension MySQL soit compatible avec MySQL 4.1.0 et supérieur, elle ne supporte pas les fonctionnalités supplémentaires que cette version fournit. Pour cela, utilisez plutôt 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 afin d'éviter les conflits.
Installation sur les systèmes Linux
PHP 4
L'option --with-mysql est activée par défaut. Ce comportement par défaut peut être désactivé avec l'option de configuration --without-mysql. Si MySQL est activé sans spécifier le chemin vers le dossier d'installation de MySQL, PHP utilisera la bibliothèque cliente MySQL fournie dans la distribution PHP.
Les utilisateurs qui se servent 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.
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. Utilisez l'option de configuration --with-mysql[=DIR] pour inclure le support MySQL. Vous pouvez télécharger les en-têtes et les bibliothèques depuis le site officiel de » MySQL.
Installation sur les systèmes Windows
PHP 4
L'extension MySQL est directement fournie dans la distribution PHP.
PHP 5+
MySQL n'est plus activé par défaut, ainsi, la bibliothèque php_mysql.dll doit être activée dans le php.ini. De plus, PHP doit avoir accès à la bibliothèque cliente MySQL. Un fichier nommé libmysql.dll est inclus dans la distribution de PHP pour Windows et pour que PHP puisse discuter avec MySQL, ce fichier doit être disponible dans le PATH du système Windows. Lisez la FAQ intitulée "Où dois-je ajouter mon répertoire PHP à la variable PATH sous Windows ?" pour plus d'informations sur la réalisation de cela. Néanmoins, le fait de copier le fichier libmysql.dll dans le répertoire système de Windows fonctionne (car le dossier système est par défaut dans le PATH système), mais cela n'est pas du tout recommandé.
Pour activer n'importe quelle extension PHP (comme php_mysql.dll), la directive PHP extension_dir doit être définie et doit pointer vers le dossier où sont stockées les extensions PHP. Lisez également le manuel d'installation sous Windows. Par exemple, voici une valeur possible pour la directive extension_dir en PHP 5 : c:\php\ext
Note: Si lorsque vous démarrez le serveur web une erreur similaire à ceci apparaît : "Unable to load dynamic library './php_mysql.dll'", c'est parce que php_mysql.dll et/ou libmysql.dll n'ont pû être trouvés par le système.
Notes sur l'installation de MySQL
Des crashes et des problèmes de démarrage de PHP peuvent être rencontrés 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 bibliothèque 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.
Nom | Par défaut | Modifiable | Historique |
---|---|---|---|
mysql.allow_persistent | "1" | PHP_INI_SYSTEM | |
mysql.max_persistent | "-1" | PHP_INI_SYSTEM | |
mysql.max_links | "-1" | PHP_INI_SYSTEM | |
mysql.trace_mode | "Off" | PHP_INI_ALL | Disponible depuis PHP 4.3.0. |
mysql.default_port | NULL | PHP_INI_ALL | |
mysql.default_socket | NULL | PHP_INI_ALL | Disponible depuis PHP 4.0.1. |
mysql.default_host | NULL | PHP_INI_ALL | |
mysql.default_user | NULL | PHP_INI_ALL | |
mysql.default_password | NULL | PHP_INI_ALL | |
mysql.connect_timeout | "60" | PHP_INI_ALL | PHP_INI_SYSTEM en PHP <= 4.3.2. Disponible depuis PHP 4.3.0. |
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 entier
-
Le nombre maximum de connexions persistantes aux bases de données MySQL, par processus.
- mysql.max_links entier
-
Le nombre maximum de connexions aux bases de données MySQL, y compris les connexions persistantes, par processus.
- mysql.trace_mode boolean
-
Mode trace. Lorsque mysql.trace_mode est activée, des alertes pour scans de table ou d'index, pour oubli de libération des ressources ou erreurs SQL seront affichées. Cette option a été introduite en PHP 4.3.0)
- mysql.default_port string
-
Le numéro de port TCP par défaut, utilisé pour se connecter à la base de données, lorsque aucun port n'est spécifié. Si aucun port par défaut n'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 ordre. Windows n'utilisera aussi que la constante MYSQL_PORT.
- mysql.default_socket string
-
Le nom par défaut de la socket lorsque l'on se connecte 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 pas lorsque le safe mode SQL 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 pas lorsque le safe mode SQL 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 pas lorsque le safe mode SQL est activé.
- mysql.connect_timeout entier
-
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é-définies
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 :
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). |
MYSQL_CLIENT_SSL | Utilisation du chiffrement SSL. Cette constante n'est disponible qu'à partir de la version 4.x et plus récente de la bibliothèque cliente MySQL. La version 3.23.x est fournis avec PHP 4 ainsi qu'avec les binaires pour windows de PHP 5. |
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 :
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. |
Notes
Note: La plupart des fonctions MySQL acceptent link_identifier comme le dernier paramètre optionnel. S'il n'est pas fourni, la dernière connexion ouverte est utilisée. Si elle n'existe pas, une connexion est essayée d'être établie avec les paramètres par défaut définis dans php.ini. Si les fonctions ne réussissent pas, elles retournent FALSE.
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.
Example#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);
?>
Table of Contents
- mysql_affected_rows — Retourne le nombre de lignes affectées lors de la dernière opération MySQL
- mysql_change_user — Change le nom de l'utilisateur de la connexion active
- mysql_client_encoding — Retourne le nom du jeu de caractères utilisé par le client MySQL
- 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
- 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 les caractères spéciaux SQL
- mysql_fetch_array — Retourne une ligne de résultat MySQL sous la forme d'un tableau associatif, d'un tableau indexé, ou les deux
- mysql_fetch_assoc — Lit une ligne de résultat MySQL dans un tableau associatif
- mysql_fetch_field — Retourne les données enregistrées dans une colonne MySQL sous forme d'objet
- mysql_fetch_lengths — Retourne la taille de chaque colonne d'une ligne de résultat MySQL
- 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 champ de résultat MySQL
- mysql_field_name — Retourne le nom d'une colonne dans un résultat MySQL
- mysql_field_seek — Déplace le pointeur de résultat vers une position donnée
- mysql_field_table — Retourne le nom de la table MySQL où se trouve une colonne
- mysql_field_type — Retourne le type d'une colonne MySQL spécifique
- mysql_free_result — Libère 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 — Lit des informations à propos de la dernière requête MySQL
- mysql_insert_id — Retourne l'identifiant généré par la dernière requête INSERT MySQL
- mysql_list_dbs — Liste les bases de données disponibles sur le serveur MySQL
- mysql_list_fields — Liste les champs d'une table MySQL
- mysql_list_processes — Liste les processus MySQL
- mysql_list_tables — Liste les tables d'une base de données MySQL
- 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
- mysql_pconnect — Ouvre une connexion persistante à un serveur MySQL
- mysql_ping — Vérifie la connexion au serveur MySQL, et s'y reconnecte au besoin
- mysql_query — Envoie une requête à un serveur MySQL
- mysql_real_escape_string — Protège les caractères spéciaux d'une commande SQL
- mysql_result — Retourne un champ d'un résultat MySQL
- mysql_select_db — Sélectionne une base de données MySQL
- mysql_set_charset — Sets the client character set
- mysql_stat — Retourne le statut courant du serveur MySQL
- mysql_tablename — Lit le nom de la table qui contient un champ
- mysql_thread_id — Retourne l'identifiant du thread MySQL courant
- mysql_unbuffered_query — Exécute une requête SQL sans mobiliser les résultats MySQL