Как мне создать файл .sql на сервере Ubuntu?

У меня на самом деле есть этот код create.php

<?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;
}
?>

который создает загружаемый файл .sql, когда я открываю файл .php на другом ПК с помощью веб-навигатора

Но когда я запускаю его на сервере Ubuntu, я вижу только содержимое БД.

Как я могу создать файл .sql в том же каталоге, где находится файл create.php?

0

Решение

Вы не можете создать файл .sql с этим кодом, этот код создает базу данных с именем prueba

Для создания файла .sql мы используем запросы командной строки (можно использовать и на уровне приложения).

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

Это создаст .sql файл, и вы можете использовать тот же запрос на уровне приложения для создания базы данных .sql при условии, что использование базы данных имеет надлежащие права.

Вы можете использовать другие параметры, такие как —routines, если в вашей базе данных есть подпрограммы. Есть ряд необязательных параметров.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector