如何使用查询备份MySQL数据库?
我的意思是,出于安全原因,PHP的system()
函数被禁用,因此我无法调用mysqldump
。
对于表结构,我使用:
SHOW CREATE TABLE table_name
但表数据怎么样?是否存在预定义的SQL命令?我尝试使用SELECT ... INTO var_list
,但我无法使其工作(SELECT ... INTO OUTFILE
不适合我,因为db主机与我有权访问的服务器不同。)
感谢您的帮助,对不起是这样的菜鸟,但这是我的第一个问题! :)
答案 0 :(得分:1)
您不希望PHP备份数据库。只有数据库(管理软件)本身才能正确备份数据库,没有充分的理由让你自己想要这样做。
如果您要使用PHP或单独查询或两者兼而有之,您将面临巨大的问题。
答案 1 :(得分:1)
从INSERT
查询中在PHP代码中创建SELECT * FROM table
语句应该非常简单。这是一个例子:
$db = new PDO('mysql:dbname=DATABASE;host=HOST', 'USER', 'PASSWORD');
$result = $db->query('SELECT * FROM table');
$columns = array();
for($i = 0; $i < $result->columnCount(); $i++) {
$column = $result->getColumnMeta($i);
$columns[] = sprintf('`%s`', $column['name']);
}
$colstring = implode(',', $columns);
$rows = $result->fetchAll(PDO::FETCH_NUM);
$inserts = array();
foreach($rows as $r) {
$values = array_map(function($e) use ($db) {
return $db->quote($e);
},
$r);
$valstring = implode(',', $values);
$inserts[] = sprintf('INSERT INTO table (%s) VALUES (%s)',
$colstring,
$valstring);
}