0

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

对于表结构,我使用这个:

SHOW CREATE TABLE table_name

但是表格数据呢?是否存在预定义的 SQL 命令?我试过了SELECT ... INTO var_list,但我无法让它工作(SELECT ... INTO OUTFILE不适合我,因为数据库主机与我有权访问的服务器不同)。

感谢您的帮助,很抱歉成为这样的菜鸟,但这是我在这里的第一个问题!:)

4

2 回答 2

1

您不想让 PHP 备份您的数据库。只有数据库(管理软件)本身可以正确备份数据库,您没有充分的理由要自己做。

如果您要使用 PHP 或单独的查询或两者的组合来执行此操作,您将面临巨大的问题。

于 2012-06-08T09:38:30.937 回答
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);
}
于 2012-06-08T09:52:26.140 回答