5. Instructions pour requêtes MySQL
1 Connexion au serveur - 2. Sélection
d'une base de donnée - 3. Requête PHP - MySQL - 4. Gestion
des erreurs dans les requêtes SQL - 5. Création
d'une table - 6. Suppression d'une table -
7. Requêtes d'insertion - 8. Modification
des valeurs - 9. Suppression enregistrements
- 10. Commandes particulières
Ce chapitre de l'aide reprend un résumé des requêtes MySQL liées au PHP.
Seules les options les plus intéressantes sont analysées.
Les commandes dans une base de donnée se fait en
trois parties:
- la création d'une requête inclue dans une variable PHP
- la connexion à la base de donnée
- l'envoie de la commande sous forme de variable php.
mysql_connect($serveur,$login,$mot-passe):
permet la connexion au serveur
Exemple d'utilisation:
if(!mysql_connect('localhost','root','pw'))
{
Echo'Connection Impossible';
exit();
} else{
Echo'Connexion réussie';
}
|
Ces lignes de commandes PHP affichent le message
Connexion réussie si la connexion est effective.
Mysql_select_db('db'): sélectionne la base de
donnée db. Elle vient après la connexion au serveur
Exemple d'utilisation:
Mysql_select_db('dahut'); |
Cette ligne de commande sélectionne la base de
donnée Dahut. Les tables reprises dans la base de donnée sont sélectionnées
directement dans les requêtes d'insertion, de sélection ou de suppression.
Les requêtes envoyées à la base de donnée sont
d'abord créées à l'aide d'une variable. La commande PHP associée à l'envoi
de la requête est mysql_query
mysql_erreur($requete):
renvoie le message d'erreur associé à la requête, ou plutôt une indication,
rien en cas d'erreur, 1 en cas de requête réussie.
Cette commande doit toujours être précédée de la
requête effective: mysql_query
Exemple d'utilisation:
$requete="INSERT annonce SET
code='users0004',TITRE='petites annonces'";
$resultat=mysql_query($requete);
$erreur1=mysql_error();
print($erreur1);
|
La requête utilise la commande CREATE TABLE [If
not exist] nom_table (nom_champ type_champ [primary key] [NOT NULL] [AUTO_INCREMENT]
[enum('valeur1','valeur2',...), champ suivant
Exemple d'utilisation:
$requete="CREATE TABLE if not
exists member (uid smallint(6) primary key NOT NULL
auto_increment,titre enum('Monsieur','Madame','Mademoiselle') Not
null,nom varchar(25) Not Null,prenom varchar(25) Not Null)";
$resultat=mysql_query($requete);
|
Cette requête crée la table member (l'option [if
not exist] empêche la création si la table existe déjà dans la base de
donnée avec les champs
-
uid, un entier auto incrémenté utilisé comme
clé primaire.
-
titre, liste de valeurs possibles (Monsieur,
Madame, Mademoiselle), null interdit
-
nom, variable texte de taille modifiable et de
taille maximum de 25 caractères, null interdit.
-
prenom, variable texte de taille modifiable et de
taille maximum de 25 caractères, null interdit.
La requête SQL est de la forme: "DROP table
[if exists] nom_table" If exists est
optionnel mais évite les messages d'erreur. Exemple
d'utilisation:
- $requete="DROP table if exists contenu";
- $resultat=mysql_query($requete);
- $erreur=mysql_error();
- print($erreur);
|
La requête de base utilise: INSERT nom_table
Différentes méthodes sont possibles pour utiliser
cette commande:
1. Une liste de colonnes et une liste de valeurs
: Insert nom_table(nom colonne 1,nom colonne 2) Values(valeur colonne 1,valeur
colonne 2)
2. Une liste de valeurs noms - valeurs: INSERT
nom_table SET nom colonne1=valeur1, nom colonne 2=valeur 2, ...
Conditions d'utilisation: la connexion à la
base de donnée et la sélection de la base de donnée doit être exécutée
avant.
Exemple d'utilisation:
- $requete="INSERT annonce SET
code='users0003',titre='magasin informatique
YBET'";
- $resultat=mysql_query($requete);
|
ou
- $requete="Insert annonce(code,TITRE)
Values('users0001','Maison à Vendre Pin')";
- $resultat=mysql_query($requete);
|
Dans les 2 cas ci-dessus, les valeurs à insérées
sont du texte, ils sont mis entre "". Dans le cas d'insertion d'une
variable PHP:
- $requete="INSERT member SET titre='$titre',nom='$nom',prenom='$prenom',adresse='$adresse',codepost='$codepost',ville='$ville',
pays='$pays',telephone='$telephone',email='$mail',username='$utili',password='$password',
- type='$type',bday='$bday', bmonth='$bmonth',byear='$byear',regdate='$regdate'";
- $erreur=mysql_query($requete);
|
8. Requête de sélection
La requête utilise la commande Select (champs)
from table
Conditions d'utilisation: la connexion à la
base de donnée et la sélection de la base de donnée doit être exécutée
avant.
champs peut être * pour sélectionner tous les
champs ou la liste des champs à sélectionner séparés par des virgules.
Exemple d'utilisation:
- $requete="SELECT * FROM member";
- $valeur=mysql_query($requete);
|
Remarque: cette requête renvoie les valeurs
sous forme de tableau. La commande print($valeur) n'affiche pas de résultat.
7.1. Nombre de valeurs renvoyées:
La commande permettant de connaître le nombre de
lignes de résultat est: mysql_num_rows()
Exemple d'utilisation:
- $valeur=mysql_query($requete);
- $ligne=mysql_num_rows($valeur)
|
7.2. Affichage des résultats
L'affichage des valeurs se fait généralement par
une boucle While utilisant la fonction mysql_fetch_array(). Les
coordonnées du tableau sont les noms de champs.
Conditions d'utilisation: la requête de
sélection doit au préalable être envoyée à la base de donnée.
Exemple d'utilisation:
- $requete="select * from annonce order by 'dateinsertion' DESC";
- $valeur=mysql_query($requete);
- while ($tableau=mysql_fetch_array($valeur)){
- echo$tableau['code']."-".$tableau['titre']."-<br>";
- }
|
7.3 Where (Like)
Cette option permet de filtre les données sous une
ou plusieurs conditions
where champ='valeur'
Exemple d'utilisation:
- $requete="SELECT * FROM member where email='$mail'";
- $valeur=mysql_query($requete);
|
Pour l'utilisation de caractères de remplacement, on
utilise LIKE. Cette commande utilise un masque de recherche:
Exemple d'utilisation:
$requete="SELECT * FROM config where type like 'BA%'";
$valeur=mysql_query($requete); |
7.4. Options
Différentes options sont possibles pour affiner les
résultats:
ORDER BY 'nom du champ' permet de trier les résultats
de la requête MySQL. [DESC] - [ASC] Par défaut, le tri est ascendant.
Exemple d'utilisation:
- $requete="select * from annonce order by 'dateinsertion' DESC";
|
[Limit [offset,] lignes] permet de ne repren,dre
que les X lignes (où X est un nombre entier). l'offset permet de débuter à la
ligne Y.
Exemple d'utilisation:
- $requete="select * from annonce order by 'dateinsertion' DESC
limit 2,20";
|
sélectionne 20 lignes, sauf les 2 premières.
7.5 Valeurs uniques
Dans une table, pour récupérer un seul affichage
(une valeur unique) lorsque des mêmes valeurs sont reprises dans un champ, vous
pouvez utiliser l'option DISTINCT. Par exemple:
- $requete="select DISTINCT numero_ticket, date_ticket from ticket"
|
n'affiche qu'une seule fois les tickets avec un même
numéro.
La requête utilise la commande UPDATE table SET
nom_champ=nouvelle valeur
Conditions d'utilisation: la base de donnée
doit être ouverte.
Exemple d'utilisation:
- $requete="UPDATE annonce SET site='dahut.be'";
- $valeur=mysql_query($requete);
|
Cette commande va remplacer dans TOUS LES
ENREGISTREMENTS le contenu du champ site par dahut.be.
8.1. Option where (like)
L'option Where conditions permet de limiter la
modification à des enregistrements particuliers.
Exemple:
- $requete="UPDATE utilisateur SET ville='IZEL' where
nom='Lejeune'";
- $valeur=mysql_query($requete);
ou
- $requete="UPDATE utilisateur SET ville='IZEL' where nom=like
'_b%'";
- $valeur=mysql_query($requete);
|
Cette requête remplace le nom de la ville par IZEL
dans la table utilisateur pour les enregistrements dont le nom utilisateur est
Lejeune. Attention, MySQL est sensible à la casse (majuscules / minuscules).
8.2. Limit
L'utilisation de [Limit [offset,] lignes] est
équivalent à celle de la commande SELECT.
8.3. Nombre de valeurs affectées
la commande mysql_affected_rows() renvoie le nombre
de valeurs modifiées.
Exemple:
$ligne=mysql_affected_rows($valeur);
// $valeur est le résultat de mysql_query($requete) |
La commande associée à la suppression
d'enregistrement est DELETE FROM table [WHERE condition] [LIMIT]
Exemples d'utilisation:
A. Vider la table (effacement complet des
données).
- $requete="DELETE From utilisateur";
- $valeur=mysql_query($requete);
|
B. Supprimer des enregistrements particuliers.
- $requete="DELETE From utilisateur where nom='DAHUT'";
- $valeur=mysql_query($requete);
|
Cette requête MYSQL supprime les utilisateurs dont
le nom est DAHUT. La commande est sensible à la casse.
C. Limitation du nombre d'enregistrements à
supprimer.
- $requete="DELETE From utilisateur LIMIT 20";
- $valeur=mysql_query($requete);
|
Cette requête supprime uniquement les 20 premiers
enregistrements.
9.1. Nombre de lignes supprimées
la commande mysql_affected_rows() renvoie le
nombre de valeurs modifiées. Le résultat est un nombre entier.
Exemple:
$ligne=mysql_affected_rows($valeur);
// $valeur est le résultat de mysql_query($requete) |
Sont rassemblées ici diverses commandes liées à la
gestion de MySQL via PHP.
Dernière valeur rentrée avec une table contenant
une valeur autoincrémentée, juste après mysql_querry, vous pourvez utiliser
la fonction mysql_insert_id() qui renvoie une variable de type INT.
Lorsqu'une valeur est rentrée dans une base de
donnée via un formulaire, avec une variable POST dans un fichier auto-invocant,
le rafraîchissement de la page reprend les valeurs précédemment inscrites.
Pour revenir à la page d'entrée, vous pouvez utiliser la fonction Die.
Content donne le nombre de secondes avant la redirection, URL l'adresse de
redirection.
die('<meta http-equiv="refresh"
content="3; URL=index.php">'); |
|