Insérer des données dans une table MySQL: Cas des données d'un tableau PHP

Lorsque vous êtes un développeur PHP, il est fréquent d'avoir besoin d'insérer plusieurs lignes de données dans une table MySQL. Cet article vous guidera à travers deux méthodes simples pour accomplir cette tâche. Vous apprendrez comment effectuer l'insertion de manière efficace en utilisant des techniques adaptées. Que vous préfériez une approche répétitive ou une insertion en une seule opération, nous vous présenterons les étapes nécessaires pour réussir. Découvrons ensemble ces méthodes !

Les Données

Considérons par exemple le tableau de données multidimensionnel qui regroupe les noms, prénoms et l’âge des personnels d’une entreprise :

Ce tableau peut être traduit en PHP comme suit:


 

$infoPersonnels = array(
    "0" => array("Bouzid ", " Hamid ", "43"),
    "1" => array("Giraud", "Claire", "27"),
    "2" => array("Yamine ", " Lina ", "22"),
    "3" => array("Casanova", "Doriane", "30"),
    "4" => array("Cherradi", "Hicham", "50")
);
    

Pour insérer toutes les données de ce tableau dans une base de données Mysql, il nous faut d’abord créer une base de données que nous allons la nommer par exemple, « personnels » et dans laquelle nous créons une table que nous allons la nommer par exemple « table_personnels ». Cette table a quatre attributs (la clé, nom, prenom et age).

Il existe deux manières de faire l’insertion de ce type de données : soit qu’on répète l’exécution de la requête d’insertion pour chaque élément du tableau (c’est à dire chaque ligne), soit qu’on utilise une seule requête d’insertion en concaténant toutes les valeurs du tableau dans un tableau.

Option 1 : Insérer les données d’un tableau dans une table MySQL à l’aide d’une requête répétitive.

Si vous souhaitez insérer les données une par une, vous pouvez utiliser une requête répétitive pour chaque ligne du tableau. Pour cela, nous allons faire appel à la boucle foreach spécifique à parcourir un tableau.Ainsi, nous allons itérer sur chaque ligne de données du tableau et exécuter une requette d'insertion distincte pour chaque ligne.

 
   	$infoPersonnels = array(
		"0" => array("Bouzid ", " Hamid ", "43"),
		"1" => array("Giraud", "Claire", "27"),
		"2" => array("Yamine ", " Lina ", "22"),
		"3" => array("Casanova", "Doriane", "30"),
		"4" => array("Cherradi", "Hicham", "50")
	);

// Connexion à la base de données à l'aide de PDO
	$bdd = new PDO('mysql:dbname = personnels; host=localhost','root','');
	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

	if(is_array($infoPersonnels)){
		foreach($infoPersonnels as $row) {
			
			$nom = $row[0];
			$prenom =$row[1];
			$age = $row[2];
        // requette préparée
			$requette = $bdd->prepare('INSERT INTO personnels.table_personnels(nom, prenom, age) VALUES(:nom, :prenom, :age)');

//Bindvalue pour faire la liaison entre les paramètres nommés et leurs valeurs
			$requette->bindvalue(':nom', $nom);
			$requette->bindvalue(':prenom', $prenom);
			$requette->bindvalue(':age', $age);

			$requette->execute();
		}
	}


    

L’exécution de ce code aboutit à l'insertion ligne par ligne de toutes les données du tableau dans la base de données.

Option 2 : Insertion de toutes les données d’un tableau à la fois dans une base de données

La deuxième méthode consiste à insérer à la fois toutes les valeurs d’un tableau dans une base de données MySQL.

Pour ce faire, nous avons besoin de la fonction PHP, implode() dont la syntaxe générale est :

implode (string $separator , array $array ). Cette méthode permet de rassembler les éléments d’un tableau en une chaine de caractères séparés par un séparateur.

Le premier paramètre est le séparateur, dans notre cas il serait une virgule (,) et le deuxième paramètre est le tableau qu’on souhaite rassembler ses éléments.

Nous aurons aussi besoin d’utiliser la fonction array_fill() qui permet de créer un tableau avec les mêmes valeurs (dynamiques).

La syntaxe générale est :

array_fill ($index_debut , $nbre , $valeur)

Cette fonction permet en fait de créer un tableau ayant $nbre entrées, toutes de valeurs égales $valeur.

Voyons comment alors le code suivant :

 

    $infoPersonnels = array(
		"0" => array("Casanova", "Lucie", "22"),
		"1" => array("Chauvet", "Marie", "40"),
		"2" => array("Moulec", "Benoit", "30"),
		"3" => array("Larauy", "Camille", "30"),
		"4" => array("Azzaoui", "Lina", "18")
	);

// Connexion à la base de données à l'aide de PDO
	$bdd = new PDO('mysql:dbname = personnels; host=localhost','root','');
	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);


	$sql = "INSERT INTO personnels.table_personnels(nom, prenom, age) values ";

	$paramTab = array();

	$sqlTab = array();

	foreach($infoPersonnels as $row)
	{
// Le résultat de ligne suivante : $sqltab va ressembler à ["(?,?,?)", "(?,?,?)", ... ]

		$sqlTab[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';

		foreach($row as $element)
		{
			$paramTab[] = $element;
		}
	}

	$sql .= implode(',', $sqlTab);

	$req = $bdd->prepare($sql);

	$req->execute($paramTab);


    

Conclusion

En conclusion, nous avons examiné deux options pour insérer les données d'un tableau PHP dans une base de données MySQL.

La première option consiste à utiliser une requête répétitive pour insérer les données une par une. Cette approche peut être utile lorsque vous avez besoin de manipuler ou de valider les données avant de les insérer dans la base de données. Cependant, cette méthode peut être fastidieuse et prendre plus de temps si vous avez un grand nombre de données à insérer.

La deuxième option, qui consiste à insérer toutes les données du tableau en une seule fois, est souvent plus efficace et rapide. Vous pouvez utiliser des techniques telles que les requêtes préparées pour préparer et exécuter une seule requête d'insertion avec toutes les données. Cette méthode est particulièrement avantageuse lorsque vous devez insérer un grand nombre de données en une seule opération.

Il est important de noter que le choix de la méthode dépendra de vos besoins spécifiques et de la structure de vos données. Si vous avez besoin de manipuler individuellement chaque donnée avant l'insertion ou si vous souhaitez effectuer des validations supplémentaires, la première option peut être plus appropriée. En revanche, si vous avez un grand nombre de données à insérer rapidement, la deuxième option est plus recommandée.

Quelle que soit l'option choisie, il est essentiel de bien gérer les erreurs et de sécuriser vos requêtes pour éviter les failles de sécurité. Assurez-vous également de bien comprendre la structure de votre base de données et de formater correctement les données avant l'insertion.

En fin de compte, maîtriser ces deux méthodes d'insertion des données d'un tableau PHP dans une base de données MySQL vous permettra d'améliorer l'efficacité de vos opérations et d'optimiser vos développements web. Choisissez la méthode qui convient le mieux à votre situation et continuez à explorer les possibilités offertes par le langage PHP et MySQL pour créer des applications web puissantes et performantes.

  • N'hésitez pas à partager cette article!

Maitriser HTML et CSS: du débutant à Expert

Si vous souhaitez apprendre le HTML et le CSS, plongez dans l'univers captivant de la conception web avec le livre (ebook) "Maitriser HTML et CSS : du Débutant à Expert" publié sur Amazon. Vous trouverez dans ce livre tout ce que vous avez besoin pour développer vos compétences en HTML et CSS. Ce livre sera votre référence en HTML et CSS. C'est votre ticket pour un voyage extraordinaire où vous découvrirez les fondations du web, devenant ainsi le maître de votre propre espace en ligne. Cliquez sur l'image ci-dessous pour y accéder directement.