質問: `mysqldump`を使えば一瞬ですが、`PHPMyAdmin`は`mysqldump`が無くても動くというので、裏側でどういった処理を行っているのでしょうか?PHPだけでどうやってSQLをダンプしているのか、気になります。 お恥ずかしいですが、ソース読んでも膨大すぎてさっぱりだったので、何方かご教示頂けたら幸いです。 ちなみに、「WP Migrate DB」というWordPressのプラグインがあるのですが、こちらも気になりますね。
回答: phpMyAdmin-4.3.7 のソースコードを眺めてみました。 おそらく質問者様の言われている「ダンプ」と「mysqldump」の処理内容である「ダンプ」とは意味が異なるのではないかと思われます。以下は、phpMyAdmin のメニューで **「Dump all rows」** を選んだ場合の処理です(単一のテーブルが対象)。 コメントに書かれてある様に、「Dump all rows」、すなわち、`SELECT * FROM ...` としている様です。メニューに「Dump all rows」ではなく「Select all rows」と書いてあれば、すぐに分かったのではないかと思いますが。。。 ※ もちろん、これとは別に `mysqldump` コマンドを使用して複数のテーブルの内容をダンプする機能があります(EXPORT with SQL)。 `phpMyAdmin-4.3.7-all-languages/libraries/export.lib.php` ``` function PMA_exportTable : // We export just one table // $allrows comes from the form when "Dump all rows" has been selected if (! isset($allrows)) { $allrows = ''; } if (! isset($limit_to)) { $limit_to = 0; } if (! isset($limit_from)) { $limit_from = 0; } PMA_exportTable( $db, $table, $whatStrucOrData, $export_plugin, $crlf, $err_url, $export_type, $do_relation, $do_comments, $do_mime, $do_dates, $allrows, $limit_to, $limit_from, $sql_query, $aliases ); ``` `phpMyAdmin-4.3.7-all-languages/libraries/export.lib.php` ``` function PMA_exportTable( : if (! empty($sql_query)) { : } else { $local_query = 'SELECT * FROM ' . PMA_Util::backquote($db) . '.' . PMA_Util::backquote($table) . $add_query; } ```