Comment ajouter une valeur dans une table MySQL avec PHP

Le processus d’insertion de données dans une table MySQL via PHP peut sembler complexe, mais il peut être rendu clair et robuste en utilisant les bonnes méthodes et en structurant le code de manière lisible. Dans ce guide, nous explorerons les deux approches principales (MySQLi et PDO), les notions clés autour des insertions, des types de données, des auto_increment et des bonnes pratiques de sécurité.

Créer une table MySQL adaptée à l’insertion

Tout d’abord, il faut envisager la structure de la table. Nous allons créer une table nommée Etudiants pour une base u000000001_nom. Lors de la création, il est recommandé d’avoir une colonne ID avec propriété Auto Increment et une clé primaire (Primary). L’auto_increment permet d’assigner automatiquement un identifiant unique à chaque nouvelle entrée.

Exemple des colonnes typiques :

  • ID - int, Primary Key, Auto Increment
  • Nom - varchar
  • Possesseur - varchar
  • Plateforme - varchar
  • Prix - decimal ou int (selon le besoin)

Insertion via PHP : deux méthodes, deux outils

On peut insérer des données dans MySQL en utilisant soit MySQLi, soit PDO (PHP Data Objects). Les deux permettent d’exécuter des requêtes INSERT et de sécuriser les données grâce aux requêtes préparées.

Méthode MySQLi

Étapes générales :

Lire aussi: guide pour ajouter une valeur dans une colonne via un trigger

  1. Établir une connexion à la base de données.
  2. Préparer la requête INSERT pour insérer les valeurs dans les colonnes souhaitées.
  3. Exécuter la requête et gérer les éventuelles erreurs.

Exemple conceptuel (résumé, sans remplacer le code exact du chevalier, pour comprendre la logique) :

$conn = new mysqli($host, $user, $pass, $db);if ($conn->connect_error) { die("Échec de la connexion : " . $conn->connect_error);}$sql = "INSERT INTO Etudiants (Nom, Possesseur, Plateforme, Prix) VALUES ('Patrick', 'Battlefield', 'PC', 45)";if ($conn->query($sql) === TRUE) { echo "Nouveau enregistrement créé avec succès";} else { echo "Erreur : " . $sql . "
" . $conn->error;}$conn->close();

Remarques importantes :

  • Les valeurs numériques (par exemple 45) n’ont pas besoin d’apostrophes.
  • Pour l’ID auto_increment, on peut laisser la colonne vide dans l’INSERT ou ne pas la citer.
  • Les injections SQL doivent être évitées : utilisez des requêtes préparées et des bound parameters plutôt que d’insérer directement les chaînes dans la requête.

Méthode PDO

PDO présente plusieurs avantages, notamment une interface uniforme pour différents moteurs de base de données et des méthodes pour préparer et lier les paramètres avant l’exécution.

Étapes typiques :

  1. Créer une connexion PDO avec affichage des erreurs (optionnellement en mode exception).
  2. Préparer la requête INSERT avec des placeholders nominatifs ou positional.
  3. Binder les valeurs et exécuter la requête.

Exemple conceptuel (résumé) :

Lire aussi: Choisir le bon condensateur pour une alimentation LED sans transformateur

$dsn = "mysql:host=$host;dbname=$db;charset=utf8";$pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);$sql = "INSERT INTO Etudiants (Nom, Possesseur, Plateforme, Prix) VALUES (:nom, :possesseur, :plateforme, :prix)";$stmt = $pdo->prepare($sql);$stmt->bindParam(':nom', $nom);$stmt->bindParam(':possesseur', $possesseur);$stmt->bindParam(':plateforme', $plateforme);$stmt->bindParam(':prix', $prix);$nom = 'Patrick';$possesseur = 'Battlefield';$plateforme = 'PC';$prix = 45;$stmt->execute();

Avantages de PDO :

  • Prévention des injections SQL via les paramètres liés (bindParam, bindValue).
  • Possibilité d’utiliser différentes bases sans changer le code d’insertion.
  • Préparer la requête permet de vérifier la syntaxe avant l’exécution et d’éviter les erreurs répétitives.

Points clés autour des valeurs et des identifiants

Quelques règles utiles lors de l’insertion :

  • Les nombres n’ont pas besoin d’apostrophes dans les requêtes SQL.
  • Pour les champs auto_increment, laisser vide ou ne pas les inclure dans l’INSERT.
  • Utiliser des placeholders et des liaisons de paramètres pour éviter les injections SQL et simplifier la lisibilité.

Gestion des erreurs courantes et dépannage

Lorsque l’insertion échoue, il faut vérifier :

  • La connexion à la base de données (identifiants, host, port).
  • La syntaxe SQL (mauvaise colonne, faute de parenthèses, guillemets).
  • Les types de données (par exemple, tenter d’insérer du texte dans une colonne INT).
  • Les messages d’erreur générés par MySQL ou par PDO (quand le mode exception est activé).

#2 Comprendre l'injection SQL en 2 minutes | AppSec Academy

Bonnes pratiques et conseils pratiques

Pour une insertion robuste et maintenable :

  • Préférez PDO avec des requêtes préparées et bindParam/bindValue pour une sécurité accrue et une meilleure lisibilité.
  • Validez et échappez les données côté serveur (et côté client, mais côté serveur est indispensable).
  • Utilisez des transactions si vous devez effectuer plusieurs insertions liées et assurer l’intégrité des données.
  • Activez le mode d’erreur et gérez les exceptions pour diagnostiquer rapidement les soucis d’insertion.

Récapitulatif pratique

Pour insérer une nouvelle entrée dans une table MySQL avec PHP :

Lire aussi: Comment obtenir plus de schémas de craft

  • Choisissez PDO ou MySQLi selon vos préférences et la cohérence du projet.
  • Créez une connexion sécurisée à la base de données.
  • Préparez une requête INSERT avec des paramètres nominatifs ou positionnels.
  • Lie les valeurs et exécutez la requête, en gérant les éventuelles erreurs.
  • Vérifiez que l’ID auto_increment est bien généré par MySQL.

balises:

Articles populaires: