1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-12 17:44:07 +02:00

Use extended INSERT in select export

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@695 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana
2009-06-15 10:01:55 +00:00
parent 861171612d
commit fa5c952af0
3 changed files with 7 additions and 6 deletions

View File

@@ -12,7 +12,6 @@ function tar_file($filename, $contents) {
if ($_POST) { if ($_POST) {
$ext = dump_headers((strlen($_GET["dump"]) ? $_GET["dump"] : $_GET["db"]), (!strlen($_GET["db"]) || count((array) $_POST["tables"] + (array) $_POST["data"]) > 1)); $ext = dump_headers((strlen($_GET["dump"]) ? $_GET["dump"] : $_GET["db"]), (!strlen($_GET["db"]) || count((array) $_POST["tables"] + (array) $_POST["data"]) > 1));
if ($_POST["format"] != "csv") { if ($_POST["format"] != "csv") {
$max_packet = 1048576; // default, minimum is 1024
echo "SET NAMES utf8;\n"; echo "SET NAMES utf8;\n";
echo "SET foreign_key_checks = 0;\n"; echo "SET foreign_key_checks = 0;\n";
echo "SET time_zone = '" . $dbh->escape_string($dbh->result($dbh->query("SELECT @@time_zone"))) . "';\n"; echo "SET time_zone = '" . $dbh->escape_string($dbh->result($dbh->query("SELECT @@time_zone"))) . "';\n";

View File

@@ -129,7 +129,7 @@ function dump_data($table, $style, $select = "") {
if ($_POST["format"] == "csv") { if ($_POST["format"] == "csv") {
dump_csv($row); dump_csv($row);
} else { } else {
$insert = "INSERT INTO " . idf_escape($table) . ($select ? " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ")" : "") . " VALUES "; $insert = "INSERT INTO " . idf_escape($table) . ($select ? " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ")" : "") . " VALUES";
$row2 = array(); $row2 = array();
foreach ($row as $key => $val) { foreach ($row as $key => $val) {
$row2[$key] = (isset($val) ? "'" . $dbh->escape_string($val) . "'" : "NULL"); $row2[$key] = (isset($val) ? "'" . $dbh->escape_string($val) . "'" : "NULL");
@@ -141,7 +141,7 @@ function dump_data($table, $style, $select = "") {
} }
echo "$insert (" . implode(", ", $row2) . ") ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n"; echo "$insert (" . implode(", ", $row2) . ") ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
} else { } else {
$s = "(" . implode(", ", $row2) . ")"; $s = "\n(" . implode(", ", $row2) . ")";
if (!$length) { if (!$length) {
echo $insert, $s; echo $insert, $s;
$length = strlen($insert) + strlen($s); $length = strlen($insert) + strlen($s);
@@ -150,7 +150,7 @@ function dump_data($table, $style, $select = "") {
if ($length < $max_packet) { if ($length < $max_packet) {
echo ", ", $s; echo ", ", $s;
} else { } else {
echo ";\n", $insert, $s; echo ";\n$insert", $s;
$length = strlen($insert) + strlen($s); $length = strlen($insert) + strlen($s);
} }
} }
@@ -175,4 +175,4 @@ function dump_headers($identifier, $multi_table = false) {
$dump_output = "<select name='output'><option value='text'>" . lang('open') . "</option><option value='file'>" . lang('save') . "</option></select>"; $dump_output = "<select name='output'><option value='text'>" . lang('open') . "</option><option value='file'>" . lang('save') . "</option></select>";
$dump_format = "<select name='format'><option value='sql'>" . lang('SQL') . "</option><option value='csv'>" . lang('CSV') . "</option></select>"; $dump_format = "<select name='format'><option value='sql'>" . lang('SQL') . "</option><option value='csv'>" . lang('CSV') . "</option></select>";
$max_packet = 0; $max_packet = 1048576; // default, minimum is 1024

View File

@@ -74,9 +74,11 @@ if ($_POST && !$error) {
dump_table($_GET["select"], ""); dump_table($_GET["select"], "");
$query = "SELECT " . ($select ? implode(", ", $select) : "*") . " FROM " . idf_escape($_GET["select"]); $query = "SELECT " . ($select ? implode(", ", $select) : "*") . " FROM " . idf_escape($_GET["select"]);
if (is_array($_POST["check"])) { if (is_array($_POST["check"])) {
$union = array();
foreach ($_POST["check"] as $val) { foreach ($_POST["check"] as $val) {
dump_data($_GET["select"], "INSERT", "$query WHERE " . implode(" AND ", where_check($val)) . " LIMIT 1"); $union[] = "($query WHERE " . implode(" AND ", where_check($val)) . " LIMIT 1)";
} }
dump_data($_GET["select"], "INSERT", implode(" UNION ALL ", $union));
} else { } else {
dump_data($_GET["select"], "INSERT", $query . ($where ? " WHERE " . implode(" AND ", $where) : "")); dump_data($_GET["select"], "INSERT", $query . ($where ? " WHERE " . implode(" AND ", $where) : ""));
} }