通过PHP运行SQL脚本

Gio*_*gio 2 php mysql shell scripting

我创建了一个backup.sql脚本来还原MySql数据库。我已经使用PHPMyAdmin导入检查了脚本,并且一切正常(数据库已成功还原)。现在,我想通过PHP运行它。我找到了这个问题,我有:

1)在以下内容的htdocs文件夹中创建一个PHP文件

$site_path= realpath(dirname(__FILE__)).'/';

$command = 'mysql'
    . ' --host=' . 'localhost'
    . ' --user=' . 'myuser'
    . ' --password=' . 'mypass'
    . ' --database=' . 'dbname'
    . ' --execute="SOURCE ' . $site_path;

$output = shell_exec($command . 'backup.sql"');
echo "<pre>".$output."</pre>";
Run Code Online (Sandbox Code Playgroud)

2)将backup.sql脚本放入htdocs文件夹

但是,当我运行脚本时,数据库上没有任何反应,关于shell_exec结果也没有显示。我正在Windows机器上的Apache下运行PHP和MySql。命令变量具有以下值:

mysql --host=localhost --user=myuser --password=mypass--database=dbname --execute="SOURCE C:\Programmi\Apache Software Foundation\Apache2.2\htdocs/
Run Code Online (Sandbox Code Playgroud)

我想念什么?

Hug*_*ves 5

$mysql_host = "localhost";
$mysql_database = "db";
$mysql_user = "user";
$mysql_password = "password";
# MySQL with PDO_MYSQL  
$db = new PDO("mysql:host=$mysql_host;dbname=$mysql_database", $mysql_user, $mysql_password);

$query = file_get_contents("shop.sql");

$stmt = $db->prepare($query);

if ($stmt->execute())
     echo "Success";
else 
     echo "Fail";
Run Code Online (Sandbox Code Playgroud)

如果您的sql文件中的整个代码100%正确且没有任何更改,请尝试执行此操作,并使用PDO来提高代码的安全性。