我创建了一个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>";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/我遗漏了什么?
发布于 2014-10-22 12:01:14
$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来提高代码中的安全性。
发布于 2015-08-27 21:24:37
发布于 2022-01-03 03:38:51
我注意到的一件事是,操作可能会花费更长的时间,或者如果之后需要另一个操作,特别是在开发过程中测试文件是否已经执行时,执行方法将不会终止。
我的简单解决方案是执行查询,然后得到准备好的查询和运行方法rowCount,这样我们就可以安全地测试是否终止了.。
所以,只要使用$count = $stmt->rowCount();,而不仅仅是$stmt->execute();
try {
$db = new PDO("mysql:host=" . DB_HOST . ";dbname=" . DB_NAME, DB_USER, DB_PASS);
$query = file_get_contents(__DIR__ . "/test.sql");
$stmt = $db->prepare($query);
$stmt->execute();
$stmt->closeCursor();// Safely consuming the SQL operation till end
$count = $stmt->rowCount(); // Check if not pending transaction
if ($count) {
foreach($db->query('SELECT * from person') as $row) {
print_r($row);
}
}
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
exit;
}https://stackoverflow.com/questions/26506820
复制相似问题