Initiation à MySQL

Voici une description assez succinte des fonctionnalités de MySQL administrables en PHP. La documentation complète et en Français se trouve téléchargeable ci-dessous.

Télécharger Télécharger la documentation en français

Gestion des erreurs

Les erreurs générées par MySQL peuvent être affichées par le code suivant

echo "Erreur MySQL: ".mysql_error()."<BR>";

Connexion au serveur MySQL

Pour accèder à MySQL, il faut ouvrir une connexion sur le serveur via l'instruction mysql_connect

int mysql_connect(hostname, username, password);

Cette fonction retourne un identifiant positif en cas de succès, 0 sinon. Notez que tous les paramètres sont optionnels et qu'ils seront automatiquement remplacés par les valeurs par défaut s'ils sont omis. D'autre part, la connexion peut être fermée explicitement par mysql_close(), ou implicitement lorsque l'exécution du script s'achève.

Création d'une base de données MySQL

Il suffit d'employer la commande mysql_create_db

int mysql_create_db(nom de la base);

Suppression d'une base de données

Pour effacer une base de données, il faut utiliser mysql_drop_db

int mysql_drop_db(nom de la base);

Retourne VRAI en case de succès, FALSE sinon.

Sélection d'une base de données

La fonction mysql_select_db permet de choisir la base de données sur laquelle agir

int mysql_select_db(nom de la base);

La fonction retrourne VRAI en cas de succèes, FAUX sinon.

Requètes MySQL et accès aux tables

Les requètes sont envoyées par le commande mysql_db_query

int mysql_db_query(requète);

Retourne un identifiant de résultat si la requête réussi, FALSE sinon. Cet identifiant sera utilisé pour parcourir la réponse à la requète (instructions mysql_fetch_array...) et il devra ensuite être libéré de la mémoire à l'aide de mysql_free_result. (se reporter aux paragraphes suivant)

Créer une table

La requète à envoyer pour créer une table est de la forme

CREATE TABLE nom de la table (
  identifiant_colonne
  type
  attribut,
  ... )
Attributs possibles
NULL champ éventuellement vide
NOT NULL champ jamais vide
UNSIGNED champ non signé
ZERO FILL champ initialisé à 0
BINARY champ binaire
AUTO_INCREMENT champ incrémenté automatiquement
DEFAULT valeur par défaut champ muni d'une valeur par défaut

Types numériques
TINYINT 1 octet
SMALLINT 2 octets
MEDIUMINT 3 octets
INT 4 octets
INTEGER 4 octets
BIGINT 8 octets
FLOAT(4) 4 octets
FLOAT(8) 8 octets
FLOAT 4 octets
DOUBLE 8 octets
REAL 8 octets
DECIMAL(M,D) M (D+2 si M<D)
NUMERIC(M,D) M (D+2 si M<D)

Types date et heure
DATETIME 8 octets [0000-00-00 00:00:00]
DATE 3 octets [0000-00-00]
TIMESTAMP(8) 4 octets [YYYYMMDD]
TIME 3 octets [00:00:00]
YEAR 1 octets [0000]

Types chaîne
CHAR(M) M (entre 1 et 255)
VARCHAR(M) L+1 avec L<M+1
TINYBLOB, TINITEXT L+1 avec L<256
BLOB, TEXT L+2 avec L<65536
MEDIUM[BLOB/TEXT] L+3 avec L<16777216
LONGBLOB, LONGTEXT L+4 avec L<4294967296
ENUM('val1','val2'...) 1 ou 2 octets
SET('val1','val2',...) 1,2,3,4 ou 8 octets

Il est aussi possible de déclarer des index sur des données déclarées NOT NULL pour accélérer les futures requètes.

Index de colonne

KEY identifiant_index (identifiant_colonne)

Index sur plusieurs colonnes

INDEX identifiant_index (identifiant_colonne1, identifiant_colonne2)

Insérer des éléments dans la table

La requète à envoyer est:

INSERT INTO nom_table(col1, col2...) VALUES (val1, val2...}

Remarque REPLACE fonctionne exactement comme INSERT, mais si une ligne d'une table a une colonne qui porte l'attribut unique, REPLACE pourra remplacer cette ligne par une nouvelle ligne, tout en gardant la même valeur dans la colonne de type unique.

Modifier des éléments de la table

UPDATE nom_table SET co1=expr1,col2=expr2,... [WHERE ...]

Lecture des éléments d'une table

Il faut employer la commande mysql_fetch_array à la suite de la requète pour récupérer les éléments sélectionnés par celle-ci. Ainsi, le code suivant permet de lire toutes les lignes d'une table

$result=mysql_db_query("select * from table")
        or die("requète invalide");

while ($row=mysql_fetch_array($result))
{
 echo "Colonne1:".$row["colonne1"].", ";
 echo "Colonne2:".$row["colonne2"].", ";
 ...
}

mysql_free_result($result);

La commande mysql_fetch_object est assez similaire, à la différence près que les colonnes obtenues sont des objets et non plus des tableaux associatifs. Pour accèder à la colonne1, on emploie alors $row->colonne1.

Il est possible de connaître le nombre de lignes d'un résultat de requète par $mysql_num_rows($result).

Suppression de lignes

La requète à envoyer est.

DELETE FROM table [WHERE ...]
Télécharger Installer Windows Apache MySql PHP