使用PHP备份MySQL数据库
我试图使用下面的PHP脚本对MySQL数据库进行一个名为“备份”的备份,但由于某些原因,它不起作用。你知道怎么了吗?我想在包含数据的同一文件夹中创建一个名为test.sql的文件(因为数据库很大,我只选择了Temp>35的值,但我可以稍后更改)。现在当我运行它时,我得到了回音,但没有创建任何文件使用PHP备份MySQL数据库,php,mysql,backup,Php,Mysql,Backup,我试图使用下面的PHP脚本对MySQL数据库进行一个名为“备份”的备份,但由于某些原因,它不起作用。你知道怎么了吗?我想在包含数据的同一文件夹中创建一个名为test.sql的文件(因为数据库很大,我只选择了Temp>35的值,但我可以稍后更改)。现在当我运行它时,我得到了回音,但没有创建任何文件 <?php $dbhost = '...'; $dbuser = '...'; $dbpass = '...'; $dbname = 'backup'; $conn = mysql_connect
<?php
$dbhost = '...';
$dbuser = '...';
$dbpass = '...';
$dbname = 'backup';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
$tableName = 'backup';
$backupFile = 'test.sql';
$query = "SELECT * WHERE Temp>35 INTO OUTFILE '$backupFile' FROM $tableName";
$result = mysql_query($query);
echo "Backed up";
?>
试试看
$query = "SELECT * INTO OUTFILE '$backupFile' FROM $tableName WHERE Temp>35";
$result = mysql_query($query) or die(mysql_error());
试试这个,让我知道:
确保允许mysqld写入文件$backupFile
提供绝对路径,确保运行mysqld的用户可以写入文件/目录。另外,echo mysql_error()代码>可能会给你一个线索。我尝试了echo错误,你可能是对的,权限有问题,但我如何设置它们?用户“…”@“%”(使用密码:是)的访问被拒绝我得到:用户“…”@“%”(使用密码:是)的访问被拒绝,因此我尝试添加:将$dbname.*上的所有权限授予由“…”标识的“…”@“”;现在我得到:Parse error:syntax error,在…@user2370078中出现意外的T_字符串。您是在您的计算机上还是在远程服务器上运行它?远程服务器,我将dbhost、dbuser等的值设置为我用来登录我的服务器的值phpBB@user2370078通过命令行?您确定数据库详细信息正确吗?用户“…”@“%”(使用密码:是)的访问被拒绝授予此权限:只需单击服务器:localhost(打开phpMyAdmin时应为起始页),然后单击权限,选择您的用户并在数据部分添加勾号或文件(因此,不要向下滚动并选择特定的数据库)
Try this and let me know:
<?php
$dbhost = '...';
$dbuser = '...';
$dbpass = '...';
$dbname = 'backup';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
mysql_select_db($dbname);
$databasename = 'backup';
$backupFile = 'test.sql';
$query = "SELECT * INTO OUTFILE '$backupFile' FROM $databasename WHERE Temp>35";
$result = mysql_query($query);
echo "Backed up";
?>
<?php
$source_db='source_db';
$target_db='target_db';
$server='127.0.0.1';
$user='root';
$password='';
mysql_connect($server,$user,$password);
mysql_select_db($source_db);
// Get names of all tables in source database
$result=mysql_query("show tables");
while($row=mysql_fetch_array($result)){
$name=$row[0];
$this_result=mysql_query("show create table $name");
$this_row=mysql_fetch_array($this_result);
$tables[]=array('name'=>$name,'query'=>$this_row[1]);
}
// Connect target database to create and populate tables
mysql_select_db($target_db);
$total=count($tables);
for($i=0;$i < $total;$i++){
$name=$tables[$i]['name'];
$q=$tables[$i]['query'];
mysql_query($q);
mysql_query("insert into $name select * from $source_db.$name");
}
?>