2012-06-08 59 views
0

如何仅使用查询来备份MySQL数据库? 我的意思是,PHP的system()函数由于安全原因被禁用,因此我无法调用mysqldump仅使用查询复制mysqldump功能

对于使用该表结构:

SHOW CREATE TABLE table_name 

但如何对表中的数据?预定义的SQL命令是否存在?我试着用SELECT ... INTO var_list,但我无法得到这个工作(SELECT ... INTO OUTFILE不适合我,因为db主机是不同的,我有权访问的服务器)。

感谢您的帮助,并且很抱歉成为这样的noob,但这是我的第一个问题! :)

回答

1

SELECT * FROM table查询中在您的PHP代码中创建INSERT语句应该非常简单。这里有一个例子:

$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); 
} 
+0

好的,谢谢..这正是我担心的...... :) – fquffio

1

你不想让PHP备份你的数据库。只有数据库(管理软件)本身可以正确地备份数据库,没有很好的理由为什么你想自己做。

如果您要用PHP或独立查询或两者结合使用,您将面临巨大的问题。

+0

我知道哪些风险。这是我写的脚本的备份,所以我应该知道表的结构。不管怎么说,这主要是一个尝试。感谢您的回答,但这并不妨碍我尝试! :) – fquffio