Sep 18, 2024
Ismail
8minutes de lecture
Dans ce tutoriel, vous apprendrez comment INSÉRER des données dans une table MySQL via PHP. Vous pouvez utiliser deux méthodes, MySQLi et PDO. Avant de commencer ce guide d’insertion de données MySQL via PHP, vous devez avoir accès à votre panneau de contrôle d’hébergement.

Tout d’abord, nous devons créer une table pour vos données. Si vous en avez déjà créé un, passez à la section suivante. La création d’une table est un processus simple que vous pouvez faire avec phpMyAdmin, qui se trouve dans votre panneau de contrôle d’hébergement.


Après avoir ouvert une session sur votre page phpMyAdmin, vous devriez voir quelque chose de similaire à ceci :

Nous allons créer une table nommée Etudiants pour notre base de données u000000001_nom. Vous pouvez créer une nouvelle table en remplissant le champ Nom et en cliquant sur Exécuter. Ensuite, vous serez dirigé vers une nouvelle page où vous pourrez entrer toutes les informations nécessaires à votre table :

Comme il s’agit d’une configuration simple, pour plus d’informations concernant la structure d’une table/base de données et le type de paramètres que vous pouvez utiliser avec les colonnes, référez-vous à la documentation officielle de phpMyAdmin.
Pour l’instant, voici quelques explications sur les colonnes que nous avons utilisées :
Cliquez sur Enregistrer et votre table sera créée.
Vous pouvez utiliser deux méthodes pour INSÉRER des données dans votre base de données MySQL. La méthode PHP MySQLi et la méthode PHP Data Object ou PDO.
Vous devez d’abord établir une connexion à une base de données. Ensuite, nous pouvons procéder à la requête MySQL INSERT. Voici un exemple de code PHP complet avec les méthodes de connexion et d’insertion de base :
<?php
$servername = "mysql.hostinger.fr";
$database = "u000000001_nom";
$username = "u000000001_user";
$password = "MotDePasse";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);
// Check connection
if (!$conn) {
die("Échec de la connexion : " . mysqli_connect_error());
}
echo "Connexion réussie";
$sql = "INSERT INTO Etudiants (prenom, nom, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";
if (mysqli_query($conn, $sql)) {
echo "Nouveau enregistrement créé avec succès";
} else {
echo "Erreur : " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);La première partie du code (lignes 3 – 18) est destinée à la connexion à la base de données. Nous ne reviendrons pas sur cette partie.
Commençons donc par la ligne numéro 19 :
$sql = "INSERT INTO Etudiants (prenom, nom, email) VALUES ('Test', 'Testing', 'Testing@tesing.com')";Ceci est la ligne de code PHP la plus importante car elle insère des données dans la base de données MySQL. L’instruction INSERT INTO permet d’ajouter des données dans la table de la base de données spécifiée. Dans cet exemple, nous ajoutons des données dans la table Etudiants.
Ensuite, entre les parenthèses, nous avons les noms des colonnes de la table spécifiées à l’endroit où nous voulons ajouter les valeurs : (prenom, nom, email). Les données seront ajoutées dans l’ordre spécifié. Si nous écrivions (email, nom, prenom), les valeurs seraient ajoutées dans le mauvais ordre.
La partie suivante est la déclaration VALUES. Ici, nous spécifions nos valeurs à insérer dans les colonnes spécifiées précédemment. De cette façon, chaque colonne représente une valeur spécifique. Par exemple, dans notre cas, ce serait comme ceci : prenom = Test, nom = Testing, email = Testing@testing.com.
Une autre chose qui vaut la peine d’être mentionnée est que nous venons d’exécuter une requête SQL en utilisant du code PHP. Les requêtes SQL doivent être placées entre les guillemets. Dans notre exemple, tout ce qui se trouve entre les guillemets et qui est écrit après $sql = est une requête SQL.
La partie suivante du code (lignes 20 à 22) vérifie si notre requête a abouti :
if (mysqli_query($conn, $sql)) {
echo "Nouveau enregistrement créé avec succès";
}Il affiche simplement un message de réussite si la requête que nous avons lancée a abouti.
Et la dernière partie (lignes 22 à 24) affiche un message différent au cas où notre requête n’a pas abouti :
else {
echo "Erreur : " . $sql . "<br>" . mysqli_error($conn);
}Il nous fournira un message SQL d’erreur au cas où quelque chose ne fonctionnerait pas.
Comme dans l’exemple précédent, nous avons d’abord besoin d’une connexion à la base de données, ce qui se fait en créant un nouvel objet AOP – Comme la connexion à la base de données MySQL est un objet PDO, vous devez utiliser différentes méthodes PDO (toute fonction faisant partie d’un objet) pour préparer et exécuter les requêtes. Les méthodes des objets sont appelées ainsi :
$the_Object->the_Method();
PDO vous permet de préparer le code SQL avant qu’il ne soit exécuté. La requête SQL est évaluée et corrigée avant d’être exécutée. Une attaque simplifiée par injection SQL peut être réalisée en tapant simplement du code SQL dans un champ d’un formulaire. Par exemple :
// L'utilisateur écrit ceci dans le champ utilisateur d'un formulaire de connexion john"; DROP DATABASE user_table; // The final query becomes this "SELECT * FROM user_table WHERE utilisateur = john"; DROP DATABASE user_table;
Comme le code SQL est syntaxiquement correct, le point-virgule fait de DROP DATABASE user_table une nouvelle requête SQL, et votre table utilisateur est supprimée. Les instructions préparées ne permettent pas aux caractères “ et ; de terminer la requête originale et l’instruction malveillante DROP DATABASE ne sera jamais exécutée.
Vous devez toujours utiliser des déclarations préparées lorsque vous envoyez ou recevez des données de la base de données avec PDO.
Pour utiliser les déclarations préparées, vous devez écrire une nouvelle variable qui appelle la méthode prepare() de l’objet de la base de données.
Sur le code correct :
<?php
$servername = "mysql.hostinger.fr";
$database = "u000000001_nom";
$username = "u000000001_user";
$password = "MotDePasse";
$sql = "mysql:host=$servername;dbname=$database;";
$dsn_Options = [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION];
// Create a new connection to the MySQL database using PDO, $my_Db_Connection is an object
try {
$my_Db_Connection = new PDO($sql, $username, $password, $dsn_Options);
echo "Connexion réussie";
} catch (PDOException $error) {
echo 'Échec de la connexion : ' . $error->getMessage();
}
// Set the variables for the person we want to add to the database
$first_Name = "Test";
$last_Name = "Testing";
$email = "Testing@testing.com";
// Here we create a variable that calls the prepare() method of the database object
// The SQL query you want to run is entered as the parameter, and placeholders are written like this :placeholder_name
$my_Insert_Statement = $my_Db_Connection->prepare("INSERT INTO Etudiants (prenom, nom, email) VALUES (:first_name, :last_name, :email)");
// Now we tell the script which variable each placeholder actually refers to using the bindParam() method
// First parameter is the placeholder in the statement above - the second parameter is a variable that it should refer to
$my_Insert_Statement->bindParam(:first_name, $first_Name);
$my_Insert_Statement->bindParam(:last_name, $last_Name);
$my_Insert_Statement->bindParam(:email, $email);
// Execute the query using the data we just defined
// The execute() method returns TRUE if it is successful and FALSE if it is not, allowing you to write your own messages here
if ($my_Insert_Statement->execute()) {
echo "Nouveau enregistrement créé avec succès";
} else {
echo "Impossible de créer l'enregistrement";
}
// At this point you can change the data of the variables and execute again to add more data to the database
$first_Name = "John";
$last_Name = "Smith";
$email = "john.smith@email.com";
$my_Insert_Statement->execute();
// Execute again now that the variables have changed
if ($my_Insert_Statement->execute()) {
echo "Nouveau enregistrement créé avec succès";
} else {
echo "Impossible de créer l'enregistrement";
}Sur les lignes 28, 29 et 30, nous utilisons la méthode bindParam() de l’objet de la base de données. Il existe également la méthode bindValue() qui est très différente.
Notez que nous réutilisons la variable $first_Name et donnons une nouvelle valeur à la deuxième fois. Si vous vérifiez votre base de données après avoir exécuté ce script, vous avez les deux noms définis, bien que la variable $first_Name soit égale à “John” à la fin du script. N’oubliez pas que PHP évalue un script entier avant de l’exécuter.
Si vous mettez à jour le script pour remplacer bindParam par bindValue, vous insérerez dans MySQL “Test Testing” deux fois dans la base de données et John Smith sera ignoré.
Si la requête que nous avons lancée et insérée dans la base de données MySQL a réussi, nous verrons le message suivant :
Connexion réussie Nouveau enregistrement créé avec succès
Toutefois, il arrive que le nouvel enregistrement comporte une erreur avec l’insertion SQL. Mais ne vous inquiétez pas, il existe plusieurs moyens de corriger ces erreurs MySQL.
Si un message d’erreur MySQLi s’affiche, nous pouvons procéder de la manière suivante pour le corriger. Par exemple, faisons une erreur de syntaxe dans notre code, si nous le faisons, nous verrons quelque chose de similaire :
Connexion réussie
Erreur : INSERT INTO Etudiants {prenom, nom, email} VALUES ('Test', 'Testing', 'Testing@testing.com')
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{prenom, nom, email} VALUES ('Test', 'Testing', 'Test@testingcom')' at line 1"Comme vous pouvez le voir, la première partie du code est bonne, la connexion a été établie avec succès, mais notre requête SQL a échoué.
"Erreur : INSERT INTO Etudiants {prenom, nom, email} VALUES ('Test', 'Testing', 'Testing@testing.com') You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{prenom, nom, email} VALUES ('Test', 'Testing', 'Test@testingcom')' at line 1"Il y a une erreur de syntaxe qui, malheureusement, a provoqué l’échec de notre script. L’erreur se trouvait ici :
$sql = "INSERT INTO Etudiants {prenom, nom, email} VALUES ('Test', 'Testing', 'Testing@testing.com')";Nous avons utilisé des crochets bouclés au lieu de la simple parenthèse. Comme ce n’est pas correct, notre script a commis une erreur de syntaxe.
Sur la ligne 7 de la connexion PDO, le mode d’erreur est réglé pour afficher toutes les exceptions. Si cela n’était pas indiqué dans le script et que la requête échouait, vous ne recevriez aucun message d’erreur. Lorsque les exceptions sont activées, le problème spécifique est affiché.
En règle générale, cette fonction ne doit être utilisée que lors du développement d’un script car elle peut exposer les noms de la base de données et des tables, que vous préférez peut-être cacher à toute personne qui pourrait tenter d’accéder à vos données de manière malveillante. Dans le cas ci-dessus où des accolades ont été utilisées au lieu de parenthèses, l’erreur ressemble à ceci :
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; <code>check the manual that corresponds to your MySQL server version for the right syntax to use near '{prenom, nom, email} VALUES ('Test', 'Testing', 'Testing@testing.com')' at line 1"</code>Autres problèmes possibles que vous pourriez rencontrer :
Toutes ces erreurs peuvent être facilement corrigées en suivant les directives relatives aux messages d’erreur ou en consultant le journal des erreurs.
Après une saisie réussie, les données devraient être ajoutées à notre base de données. Voici un exemple de la table à laquelle nous avons ajouté nos données lorsqu’elle est vue depuis phpMyAdmin.

Dans ce tutoriel, vous avez appris à INSÉRER des données dans une table MySQL via PHP en utilisant MySQLi et PDO. Vous avez également appris à résoudre les erreurs de connexion les plus courantes. Savoir comment utiliser PHP pour ajouter des données dans une base de données MySQL est utile, que vous appreniez à coder ou à créer votre site web.
Tout le contenu des tutoriels de ce site est soumis aux normes éditoriales et aux valeurs rigoureuses de Hostinger.
Commentaires
April 25 2022
bonjour , je suis heureur de lire le code en php , mais voyons que nous Somme encore le debutant en programmation le methode dont vous avez proceder est en detail , ce difficile pour nous de comprendre le matier. svp veuillez nous expliquer ladite d'une maniere pratique c.a.d BREF.
January 09 2023
Bonjour ! L'article sera en code PHP, car il s'agit d'une base de données PHP. L'exemple de code indique ce qui doit être saisi et exactement où. Si vous avez besoin de plus d'assistance, n'hésitez pas à contacter notre équipe d'assistance via : fr@hostinger.com
November 09 2022
Excellent!