0

クエリだけを使用してMySQLデータベースをバックアップするにはどうすればよいですか?system()つまり、セキュリティ上の理由からPHPの関数が無効になっているため、を呼び出すことができませんmysqldump

テーブル構造の場合、これを使用します。

SHOW CREATE TABLE table_name

しかし、テーブルデータはどうですか?事前定義されたSQLコマンドは存在しますか?で試しましたがSELECT ... INTO var_list、これを機能させることができません(SELECT ... INTO OUTFILEdbホストは、アクセスできるサーバーとは異なるため、私には適していません)。

あなたの助けに感謝し、そのような初心者であることをお詫びします、しかしこれはここでの私の最初の質問です!:)

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 に答える