SELECT, INSERT, UPDATE, DELETE depuis le PHP
Lire dans la base de données avec SELECT
analyse d'un code d'exemple
$query = $db->prepare('SELECT * FROM users WHERE id = :id');
$parameters = [
'id' => $_GET['id']
];
$query->execute($parameters);
$query = $db->prepare('SELECT * FROM users WHERE id = :id');
Je prépare ma requête et lui indique si elle va devoir attendre des paramètres (avec :nom_du_parametre).
$parameters = [
'id' => $_GET['id']
];
Je prépare les paramètres de ma requête s'il y en a.
$query->execute($parameters);
J'exécute ma requête en lui passant les paramètres.
fetch
Si vous n'avez qu'une seule entrée à récupérer, utilisez fetch.
id | first_name | last_name |
|---|
1 | Steve | Rogers |
2 | Clark | Kent |
$query = $db->prepare('SELECT * FROM users WHERE id = :id');
$parameters = [
'id' => $_GET['id']
];
$query->execute($parameters);
$user = $query->fetch(PDO::FETCH_ASSOC);
Si $_GET['id'] vaut 2, le résultat sera :
[
'id' => 2,
'first_name' => 'Clark',
'last_name' => 'Kent'
];
fetchAll
Si vous en avez plusieurs, utilisez fetchAll.
id | first_name | last_name |
|---|
1 | Steve | Rogers |
2 | Clark | Kent |
$query = $db->prepare('SELECT * FROM users');
$query->execute();
$users = $query->fetchAll(PDO::FETCH_ASSOC);
Le résultat serait :
[
[
'id' => 1,
'first_name' => 'Steve',
'last_name' => 'Rogers'
],
[
'id' => 2,
'first_name' => 'Clark',
'last_name' => 'Kent'
]
];
Se protéger des injections
N'utilisez jamais directement quelque chose transmis par un utilisateur. Jamais. C'est une énorme faille de sécurité, probablement l'une des pires.
⛔️ Vraiment ne faites jamais ça. ⛔️
'SELECT * FROM users WHERE id = ' . $_GET['id']
⛔️ "Never ever ever !" (Taylor Swift) ⛔️
On utilise donc les paramètres et la préparation de requête. En faisant ça, PDO va se charger de nettoyer les données de ce qui pourrait y être nuisible.
Vous avez un exemple dans la démonstration de fetch, mais je le remets au cas où c'est important :
if (isset($_GET['id'])) {
// je mets un placeholder dans la requête avec :
$query = $db->prepare('SELECT * FROM users WHERE id = :id');
// je prépare ma requête avec les paramètres
$parameters = [
'id' => $_GET['id']
];
// PDO va cleaner les paramètres puis exécuter la requête
$query->execute($parameters);
$user = $query->fetch(PDO::FETCH_ASSOC);
}
Écrire dans la base de données avec INSERT
Le principe sera le même pour utiliser INSERT, mais dans ce cas-là, pas besoin de fetch, simplement de récupérer l'id de notre nouvelle entrée dans la base :
$query = $db->prepare("INSERT INTO user (id, first_name, last_name) VALUES (NULL, :firstname, :lastname)");
$parameters = [
'firstname' => $_POST['firstname'],
'lastname' => $_POST['lastname']
];
$query->execute($parameters);
$id = $db->lastInsertId();
Modifier dans la base de données avec UPDATE
$query = $db->prepare("UPDATE user SET firstname = :firstname, lastname = :lastname WHERE id = :id");
$parameters = [
'id' => $_POST['id'],
'firstname' => $_POST['firstname'],
'lastname' => $_POST['lastname']
];
$query->execute($parameters);
Supprimer dans la base de données avec DELETE
$query = $db->prepare("DELETE FROM user WHERE id = :id");
$parameters = [
'id' => $_POST['id']
];
$query->execute($parameters);
25 November 2025