La base de donnée "exemple" possède les champs suivants :
Champ | Type | Contenu |
uid | SERIAL | Entier qui s'incrémente à chaque nouvelle entrée sert à retrouver une entrée directement |
nom | VARCHAR(20) | Chaîne de caractères de max 20 caractères contient le nom |
age | INTEGER | Entier 32 bits, contient l'âge |
Les interfaces dans les encadrés permettent de tester des commandes sur cette table.
Pour ajouter un enregistrement dans une table, on utilisera
INSERT INTO
tbl(
fld1,fld2,...) VALUES(
val1,val2,...)
Seuls les champs signalés recevront une valeur. Les autres champs recevront la valeur spéciale NULL sauf si ils ont une valeur par défaut.
Ne pas préciser le champ SERIAL
s'il y en a un pour qu'il reçoive la valeur suivante dans la séquence.
Pour récupérer des enregistrements d'une table, utiliser
SELECT
fld1,fld2,... FROM
tbl
Cette commande retournera tous les record de la table, dans l'ordre précisé dans la requête.
Pour ne conserver que les éléments vérifiant certaines conditions, préciser ces conditions en ajoutant une clause WHERE en fin de requête
WHERE
cond1 AND
cond2 AND
...
Les conditions seront de la forme champ=valeur, champ<valeur, ...
Si on veut que les résultats soient triés, ajouter en fin de requête (après le WHERE s'il existe) un
ORDER BY
fld1,fld2,...
On peut préciser le mot DESC
après un champ pour trier en ordre décroissant.
On peut utiliser ORDER BY RANDOM()
pour mélanger les records
On peut limiter le nombre de résultats en ajoutant en fin de requête (après WHERE et ORDER)
LIMIT
nbre
Pour modifier des valeurs, on utilisera l'instruction UPDATE
UPDATE
tbl SET
fld1=val1,fld2,val2,...
Pour éviter de changer tous les enregistrements, on mettra une condition WHERE selon la même syntaxe que pour la lecture.
Pour effacer des enregistrements, on utilisera l'instruction
DELETE FROM
tbl
De nouveau, on utilisera un WHERE afin de ne pas effacer toute la table mais seulement quelques enregistrements.
Pour accéder à la base de données, on utilisera une chaîne de connexion de la forme
pgsql:host=localhost;port=5433;dbname=web20
xx;user=web20
xx;password=
xyz123
Le code PHP sera le suivant :
<?php
"pgsql:host=..."
$dbh=new PDO ();
requeteSQL
...
$stm=$dbh->prepare();
$stm->execute();
while($res=$stm->fetch()) {
...
...$res["fld1"]...
...
}
?>
Si il ne peut y avoir qu'une seule ligne correspondant aux conditions de la requête, on peut remplacer le while par un if. Si il y a TOUJOURS un et un seul résultat, on peut même juste garder le $res=... sans utilise ni while ni if
Pour les requêtes qui ne retournent pas de résultat, on s'arrêtera après le execute()
Pour passer des valeurs dans la requête, on mettra des ? aux endroits où elles doivent apparaître dans la requête et on placera les valeurs dans le même ordre dans un tableau passé en paramètre au execute(). Ces valeurs correspondent aux endroits où on peut entrer un texte libre dans les exemples interactifs ci-dessus.
$stm=$dbh->prepare(
"DELETE FROM abc WHERE i<?");
$stm->execute(array(10));
A noter que le tableau de paramètres peut contenir des entiers, des réels, des chaînes ou la valeur null (en minuscules)