2016-05-24 1 views
0

J'ai fait ce code create.phpComment créer un fichier .sql sur un serveur ubuntu?

<?php 
    //ENTER THE RELEVANT INFO BELOW 
    $mysqlUserName  = "root"; 
    $mysqlPassword  = "admin"; 
    $mysqlHostName  = "localhost"; 
    $DbName    = "corporativostr_inventario"; 
    $backup_name  = "corporativostr_inventario.sql"; 
    $tables    = array("articulos","articulos_eliminados","categorias","conceptos","proveedores","registros","responsables","responsables_eliminados","usuarios","usuarios_eliminados"); 

    //or add 5th parameter(array) of specific tables: array("mytable1","mytable2","mytable3") for multiple tables 

    Export_Database($mysqlHostName,$mysqlUserName,$mysqlPassword,$DbName, $tables=false, $backup_name=false); 

    function Export_Database($host,$user,$pass,$name, $tables=false, $backup_name=false) 
    { 
     $mysqli = new mysqli($host,$user,$pass,$name); 
     $mysqli->select_db($name); 
     $mysqli->query("SET NAMES 'utf8'"); 

     $queryTables = $mysqli->query('SHOW TABLES'); 
     while($row = $queryTables->fetch_row()) 
     { 
      $target_tables[] = $row[0]; 
     } 
     if($tables !== false) 
     { 
      $target_tables = array_intersect($target_tables, $tables); 
     } 
     foreach($target_tables as $table) 
     { 
      $result   = $mysqli->query('SELECT * FROM '.$table); 
      $fields_amount = $result->field_count; 
      $rows_num=$mysqli->affected_rows;  
      $res   = $mysqli->query('SHOW CREATE TABLE '.$table); 
      $TableMLine  = $res->fetch_row(); 
      $content  = (!isset($content) ? '' : $content) . "\n\n".$TableMLine[1].";\n\n"; 

      for ($i = 0, $st_counter = 0; $i < $fields_amount; $i++, $st_counter=0) 
      { 
       while($row = $result->fetch_row()) 
       { //when started (and every after 100 command cycle): 
        if ($st_counter%100 == 0 || $st_counter == 0) 
        { 
          $content .= "\nINSERT INTO ".$table." VALUES"; 
        } 
        $content .= "\n("; 
        for($j=0; $j<$fields_amount; $j++) 
        { 
         $row[$j] = str_replace("\n","\\n", addslashes($row[$j])); 
         if (isset($row[$j])) 
         { 
          $content .= '"'.$row[$j].'"' ; 
         } 
         else 
         { 
          $content .= '""'; 
         }  
         if ($j<($fields_amount-1)) 
         { 
           $content.= ','; 
         }  
        } 
        $content .=")"; 
        //every after 100 command cycle [or at last line] ....p.s. but should be inserted 1 cycle eariler 
        if ((($st_counter+1)%100==0 && $st_counter!=0) || $st_counter+1==$rows_num) 
        { 
         $content .= ";"; 
        } 
        else 
        { 
         $content .= ","; 
        } 
        $st_counter=$st_counter+1; 
       } 
      } $content .="\n\n\n"; 
     } 
     //$backup_name = $backup_name ? $backup_name : $name."___(".date('H-i-s')."_".date('d-m-Y').")__rand".rand(1,11111111).".sql"; 
     $backup_name = $backup_name ? $backup_name : $name.".sql"; 
     header('Content-Type: application/octet-stream'); 
     header("Content-Transfer-Encoding: Binary"); 
     header("Content-disposition: attachment; filename=\"".$backup_name."\""); 
     echo $content; exit; 
    } 
?> 

qui crée un fichier sql téléchargeable quand j'ouvre le fichier .php dans d'autres PC avec le navigateur web

Mais quand je le lance avec ubuntu serveur, je ne vois que le contenu DB.

Comment créer un fichier .sql dans le même répertoire que le fichier create.php?

Répondre

1

Vous ne pouvez pas créer le fichier sql avec ce code, ce code crée la base de données avec le nom prueba

Pour créer un fichier de fichier sql, nous utilisons les requêtes de ligne de commande (peut être utilisé en utilisant le niveau d'application trop) .

mysqldump -u'user' -p'password' database_name > /path/filename.sql 

Cela va créer un fichier .sql et vous pouvez utiliser la même requête au niveau de l'application pour créer la base de données Sql fourni l'utilisation de base de données a les droits appropriés.

Vous pouvez utiliser d'autres paramètres comme --routines dans le cas où votre base de données a des sous-programmes. Il y a un certain nombre de paramètres optionnels.

+0

Mon erreur, désolé. Je l'ai édité alrady. Est-il possible d'utiliser mysqldump pour exporter une base de données à partir d'un serveur Internet? – kenethluna

+0

oui. Vous pouvez prendre le vidage de n'importe quel serveur mysql –