Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Simple PHP script to dump a MySql database
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$database = 'db';
$user = 'user';
$pass = 'pass';
$host = 'localhost';
$dir = dirname(__FILE__) . '/dump.sql';
echo "<h3>Backing up database to `<code>{$dir}</code>`</h3>";
exec("mysqldump --user={$user} --password={$pass} --host={$host} {$database} --result-file={$dir} 2>&1", $output);
var_dump($output);
@Clipso
Copy link

Clipso commented Sep 27, 2018

Hi,

Excellent script. Thanks a lot ..
By the way, if you i want to just dump the tables structures of the DB. How to do that? thanks in advance.

@ChrisToxz
Copy link

ChrisToxz commented Oct 20, 2018

@Zierk59
Copy link

Zierk59 commented Dec 18, 2018

Error occur while running above script please help me to solve this.

array (size=2)
0 => string ''mysqldump' is not recognized as an internal or external command,' (length=65)
1 => string 'operable program or batch file.' (length=31)

You have to add MySQL_Installation_Path/bin to PATH. For example if you are using MariaDB and your installation path is:

  • C:/MariaDB

Well you have to add C:/MariaDB/bin to system path.

@jdepagne
Copy link

jdepagne commented Feb 11, 2019

thanks a lot

@ifsnop
Copy link

ifsnop commented Feb 21, 2019

Just use mysqldump-php within your php code. Check out the examples or the wiki, but it is as easy as:

error_reporting(E_ALL);

require_once __DIR__ . '/vendor/autoload.php';
include_once(dirname(__FILE__) . '/vendor/mysqldump-php/src/Ifsnop/main.inc.php');

use Ifsnop\Mysqldump as IMysqldump;

try {
    $dump = new IMysqldump\Mysqldump('mysql:host=localhost;dbname=testdb', 'username', 'password');
    $dump->start('storage/work/dump.sql');
} catch (\Exception $e) {
    echo 'mysqldump-php error: ' . $e->getMessage();
}

@JimmyNongo
Copy link

JimmyNongo commented May 21, 2019

OK MERCI

@paulpwo
Copy link

paulpwo commented Feb 1, 2020

Just use mysqldump-php within your php code. Check out the examples or the wiki, but it is as easy as:

error_reporting(E_ALL);

require_once __DIR__ . '/vendor/autoload.php';
include_once(dirname(__FILE__) . '/vendor/mysqldump-php/src/Ifsnop/main.inc.php');

use Ifsnop\Mysqldump as IMysqldump;

try {
    $dump = new IMysqldump\Mysqldump('mysql:host=localhost;dbname=testdb', 'username', 'password');
    $dump->start('storage/work/dump.sql');
} catch (\Exception $e) {
    echo 'mysqldump-php error: ' . $e->getMessage();
}

Work fine!

@dougkusanagi
Copy link

dougkusanagi commented Mar 6, 2020

If you're in windows like me and don't want create a ENVIRONMENT VARIABLE, you can use the mysql dir before the dump command

<?php

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

define('DS', DIRECTORY_SEPARATOR);

$database = 'etsy';
$user = 'root';
$pass = '';
$host = 'localhost';
$dir = dirname(__FILE__) . DS . 'dump.sql';

$mysqlDir = 'D:'.DS.'wamp64'.DS.'bin'.DS.'mysql'.DS.'mysql8.0.18'.DS.'bin';    // Paste your mysql directory here and be happy
$mysqldump = $mysqlDir.DS.'mysqldump';

echo "<h3>Backing up database to `<code>{$dir}</code>`</h3>";
exec("{$mysqldump} --user={$user} --password={$pass} --host={$host} {$database} --result-file={$dir} 2>&1", $output);

var_dump($output);

@aphiwemagama
Copy link

aphiwemagama commented Feb 25, 2021

The script works well locally, now how can I use it externally?

@RoneoOrg
Copy link

RoneoOrg commented Jun 1, 2021

Thanks a lot for this script.

I improved it with a bit of bash and a desktop launcher, it's written in French but this may interest someone:

https://roneo.org/ovh-sans-ssh-sauvegarde-database-sql-script-bash/

@AlbertEinsteinGlitchPoint
Copy link

AlbertEinsteinGlitchPoint commented Oct 11, 2021

Hi guys,

first of all let me thank you for the amazing simple script.. it works great, but i needed to add some features to fit my project, such as save file from input form in php, where we select de name of the backup and post it to the execut backup script, and then download file in webrowser directly. attached below is a working example of the code.

And yeahhh keep up the good work lads.

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

include_once("conect-db.php");

$name_backup = $_REQUEST['name_backup'];

$command='mysqldump --opt -h' .$databaseHost .' -u' .$databaseUsername .' -p' .$databasePassword .' ' .$databaseName .' > ' .$name_backup;
exec($command,$output,$worked);

$file_name = basename($name_backup);
//save the file by using base name
$fn = file_put_contents($file_name,file_get_contents($name_backup));
header("Expires: 0");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: application/file");
header('Content-length: '.filesize($file_name));
header('Content-disposition: attachment; filename="'.basename($file_name).'"');
readfile($file_name);

switch($worked){
case 0:
echo 'The database ' .$databaseName .' was successfully stored in the following path '.getcwd().'./' .$name_backup .'';
break;
case 1:
echo 'An error occurred when exporting ' .$databaseName .' zu '.getcwd().'/' .$mysqlExportPath .'';
break;
case 2:
echo 'An export error has occurred, please check the following information:

MySQL Database Name:' .$databaseName .'
MySQL User Name:' .$databaseUsername .'
MySQL Password:NOTSHOWN
MySQL Host Name:' .$databaseHost .'
';
break;
}
?>

@pthavarasa
Copy link

pthavarasa commented Aug 19, 2022

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment