Cette section est close pour le moment.
Mais je n'arrête pas la veille, loin de là. Retrouvez mes projets sur Github et sur cette page qui sera à jour plus régulierement


Ressources

Définition de ressource : (nom féminin) Qui peut fournir ce dont on a besoin.
Vous l'aurez compris, sur cette page ce ne sont pas vraiment des tutoriels, c'est plutôt des penses-bêtes plus ou moins fournis mais qui vous permettront d'avoir des bases concernant la programmation.
Recherche par tag

Toujours avoir une sauvegarde de votre base de données

Toujours avoir une sauvegarde de votre base de données
Publication : Le 02/10/2012 à 12:43:50

Introduction

Faire des backup de son site c'est bien, mais il ne faut surtout pas oublier de faire des sauvegardes régulière de votre base de données. Une BDD perdue peut devenir un drame pour une entreprise.

Pour prendre un tel risque alors qu'en quelques lignes de codes on peut sécuriser ses données?

Le script

On va utiliser quelques requêtes SQL. Il nous faudra les différents identifiants permettant une connexion à une base de données.

Pour simplifier le code, nous partons du principe que la fonction de connexion à la base de données est contenu dans connect().

Marche à suivre :

- Pour lister les tables d'une base nous utilisons la requête : "SHOW TABLES FROM $DB"
- Nous parcourront le résultat obtenu et nous demandons d'écrire un "DROP TABLE IF EXISTS $TABLE", puis on demande à voir quelle requête est appelée lors de la création de la table avec "SHOW CREATE TABLE $TABLE"
- Il nous reste plus qu'à écrire la requête d'ajout. Pour cela, après avoir écrit "INSERT INTO (" nous listons les champs avec "SHOW COLUMNS FROM $TABLE" puis les valeurs contenues dans la table avec "SELECT * FROM $TABLE"
<?php
define('DB', 'base_de_donnees');
$backup = "";
$sql = "SHOW TABLES FROM ".DB;
$req = mysql_query($sql, connect());
while ($database = mysql_fetch_array($req)) {   // Parcourt des tables contenues dans Tables_in_bdd
	// Drop table
	$backup .= '-- Table <b>'.$database["Tables_in_".DB].'</b><br /><br /> ';
	$backup .= 'DROP TABLE IF EXISTS `'.$database['Tables_in_'.DB].'`;<br />';
	echo '<br />';
	
	// Create table
	$result_2 = mysql_fetch_array(mysql_query("SHOW CREATE table ".$database['Tables_in_'.DB], connect()));
	$backup .= $result_2[1].';<br /><br />';
	echo '<br />';

	// Champs dans la table
	/// Première partie de la requête, Insert into
	$sql_champs = "SHOW COLUMNS FROM `".$database['Tables_in_'.DB]."`";
	$req_champs = mysql_query($sql_champs, connect());
	$result_champs = array();
	$ligne_insert_1 = "INSERT INTO `".$database['Tables_in_'.DB]."` (";
	while ($champs = mysql_fetch_array($req_champs)) {
		$ligne_insert_1 .= "`".$champs['Field']."`, ";
		$result_champs[] = $champs['Field'];
	}
	$ligne_insert_1 = substr(trim($ligne_insert_1), 0, -1);
	$ligne_insert_1 .= ") VALUES <br />";

	$backup .= $ligne_insert_1;

	/// Deuxieme partie, on parcout la table
	$sql_contenu = "SELECT * FROM `".$database['Tables_in_'.DB]."`";
	$req_contenu = mysql_query($sql_contenu, connect());
	$ligne_insert_2 = "";
	while ($contenu = mysql_fetch_array($req_contenu)) {
		$ligne_insert_2 .= "<br />(";
		foreach ($result_champs as $champs) {
			$ligne_insert_2 .= "'".addslashes($contenu[$champs])."', ";
		}
		$ligne_insert_2 = substr(trim($ligne_insert_2), 0, -1);
		$ligne_insert_2 .= "),";
	}
	$ligne_insert_2 = substr(trim($ligne_insert_2), 0, -1).';';
	
	$backup .= $ligne_insert_2.'<br /><br />-- -------------<br /><br />';
}
echo $backup;
?>

Conclusion

A vous de voir ensuite comment vous voulez conserver la base de données, dans un fichier texte uploadé sur le serveur, dans une archive ou envoyé par mail. Le plus important c'est que vous avez une version de votre base.

Sur le même thème

Toujours avoir une sauvegarde de votre base de données
Publication : Le 02/10/2012 à 12:43:50

Tags

Tags : tutoriel / SQL / PHP

Suggestion :

Naviguer sans souris avec mousetrap.js

Naviguer sans souris avec mousetrap.js