6

我需要在远程服务器上转储表,但我无法直接访问服务器。我唯一的访问权限是通过 PHP 脚本。

是否有某种方式可以让 MySQL 返回一个

INSERT INTO `table_name` (`field1`, `field2`) VALUES ('a', 'b'), ('c', 'd')

声明,比如mysqldump会返回什么?

我无权访问 phpMyAdmin,而且我最好不想使用exec,systempassthru.

有关另一种导出方法,请参阅此问题

4

6 回答 6

5

1)你可以从 exec 或 passthru 运行 mysqldump
2)看看这个:http ://www.php-mysql-tutorial.com/perform-mysql-backup-php.php

于 2008-09-15T14:28:38.990 回答
0

如果你可以在服务器上使用 php-scripts 我会推荐phpmyadmin。然后,您可以从 Web 界面执行此操作。

于 2008-09-15T14:30:51.870 回答
0

你应该看看PHPMyAdmin,它是一个基于 php 的 MySQL 管理工具。它支持数据库的备份和恢复以及数据库服务器的“GUI”。它工作得很好。

于 2008-09-15T14:31:01.573 回答
0

我很确定phpMyAdmin为你做这件事

于 2008-09-15T14:31:30.153 回答
0

select 'insert into table table_name (field1, field2) values'
       || table_name.field1 || ', ' || table_field2 || ');'
from   table_name

应该让你开始。替换 || 使用您的数据库风格的字符串连接运算符。如果 field1 或 field2 是字符串,您将不得不想出一些引用/转义的技巧。

于 2008-09-15T14:32:05.097 回答
0

这是一种生成大量单独查询语句的方法。您还可以使用 implode 更有效地组合字符串,但这对于初学者来说更容易阅读,并且从中您可以提出一百万种其他方法。

$results = mysql_query("SELECT * FROM `table_name`");
while($row = mysql_fetch_assoc($results)) {

    $query = "INSERT INTO `table_name` ";
    $fields = '(';
    $values = '('; 

    foreach($row as $field=>$value) {
        $fields .= "'".$field."',";
        $values .= "'".mysql_escape_string($value)."',";
    }

    //drop the last comma off
    $fields = substr($fields,0,-1);
    $values = substr($values,0,-1);

    $query .= $fields . " VALUES " . $values;

    //your final result
    echo $query;
}

看看这是否能让你开始

于 2008-09-15T14:36:28.067 回答