Bienvenue Prénom - Déconnexion

Mot de passe oublié ?Accès membres : merci de vous identifier

BOURSE

RUBRIQUES

 
 PRATIQUE PHP 
Récupérer le contenu d'une base MySQL directement avec PHP
 
"Comment sauvegarder une base de données MySQL depuis un serveur mutualisé, sans passer par phpMyAdmin ?" (05/03/2005)
  Forum

Réagissez dans les forums de JDN Développeurs

Il existe deux manières de passer outre phpMyAdmin pour sauvegarder ses tables : passer directement par la commande mysqldump, ou utiliser un script PHP qui récupère le contenu de ces bases (un équivalent simplissime de phpMyAdmin, donc).

mysqldump a déjà été présenté dans nos colonnes (lire l'article du 22/11/2004), aussi nous allons nous contenter de présenter un script qui sauvegarde le contenu des tables d'une base de données précise (et non de toutes les bases accessibles à l'utilisateur...) dans un fichier texte placé au même niveau que le script, et que le webmaster pourra télécharger comme tout autre fichier. Ce fichier servira à recréer la base du début à la fin en cas de problème majeur avec MySQL. Il sera nommé du nom de la base sauvegardée, et de la date de la sauvegarde...

<?php
function mysql_structure() {
  $host = 'localhost';
  $user = 'root';
  $pass = '';
  $base = 'test2';
  
  mysql_connect($host, $user, $pass);
  mysql_select_db($base);
  $tables = mysql_list_tables($base);
  while ($donnees = mysql_fetch_array($tables))
    {
    $table = $donnees[0];
    $res = mysql_query("SHOW CREATE TABLE $table");
    if ($res)
      {
      $insertions = "";
      $tableau = mysql_fetch_array($res);
      $tableau[1] .= ";";
      $dumpsql[] = str_replace("\n", "", $tableau[1]);
      $req_table = mysql_query("SELECT * FROM $table");
      $nbr_champs = mysql_num_fields($req_table);
      while ($ligne = mysql_fetch_array($req_table))
        {
        $insertions .= "INSERT INTO $table VALUES(";
        for ($i=0; $i<=$nbr_champs-1; $i++)
          {
          $insertions .= "'" . mysql_real_escape_string($ligne[$i]) . "', ";
          }
        $insertions = substr($insertions, 0, -2);
        $insertions .= ");\n";
        }
      if ($insertions != "")
        {
        $dumpsql[] = $insertions;
        }
      }
    }
  return implode("\r", $dumpsql);
  }

echo "Taille du fichier : " . file_put_contents("sqldump-".$base."-".date("Ymd-His").".sql", mysql_structure());
?>
 
Xavier Borderie, JDN Développeurs
 
 
Accueil | Haut de page
 
 



A VOIR EGALEMENT