通过PHP运行SQL脚本

时间:2014-10-22 11:51:21

标签: php mysql shell scripting

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

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>";

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/

我错过了什么?

2 个答案:

答案 0 :(得分: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";

如果您的sql文件中的整个代码100%正确且无需更改,请尝试此操作,使用PDO以提高代码的安全性。

答案 1 :(得分:0)

您可以使用MYSQL DBMS工具作为Workbench来解决此问题,您可以在其中连接到远程/本地服务器并运行.sql文件而无需使用PHP。

PHP旨在用于应用反映某些业务功能的业务查询,而不是基本上用于服务器操作或DBMS工具等其他工具作业。

如果你真的需要这样做,你可以检查这个读取sql文件的tutorial,并使用;字符将查询分解到一个数组中,该字符应该分隔每个查询。

然后使用foreach循环遍历数组中的每个查询,并自行执行查询。