]> git.joonet.de Git - adminer.git/commitdiff
Use extended INSERT in select export
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Mon, 15 Jun 2009 10:01:55 +0000 (10:01 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Mon, 15 Jun 2009 10:01:55 +0000 (10:01 +0000)
git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@695 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/dump.inc.php
adminer/include/export.inc.php
adminer/select.inc.php

index fcf319ed4afe64d0814674ee5cb88a0e97e7519d..49dc32fbdc580de4c6bf7be3adace8ade14a2022 100644 (file)
@@ -12,7 +12,6 @@ function tar_file($filename, $contents) {
 if ($_POST) {
        $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") {
-               $max_packet = 1048576; // default, minimum is 1024
                echo "SET NAMES utf8;\n";
                echo "SET foreign_key_checks = 0;\n";
                echo "SET time_zone = '" . $dbh->escape_string($dbh->result($dbh->query("SELECT @@time_zone"))) . "';\n";
index 02b161653accab981c455771b4a439b27e3f0e30..7306fe02e58d5f21d12f19ef04ddc6aa6ca04e45 100644 (file)
@@ -129,7 +129,7 @@ function dump_data($table, $style, $select = "") {
                                if ($_POST["format"] == "csv") {
                                        dump_csv($row);
                                } 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();
                                        foreach ($row as $key => $val) {
                                                $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";
                                        } else {
-                                               $s = "(" . implode(", ", $row2) . ")";
+                                               $s = "\n(" . implode(", ", $row2) . ")";
                                                if (!$length) {
                                                        echo $insert, $s;
                                                        $length = strlen($insert) + strlen($s);
@@ -150,7 +150,7 @@ function dump_data($table, $style, $select = "") {
                                                        if ($length < $max_packet) {
                                                                echo ", ", $s;
                                                        } else {
-                                                               echo ";\n", $insert, $s;
+                                                               echo ";\n$insert", $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_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
index 0e64c2401266290d86bc2cb77a8d03fe69f2ab7b..182983702a036df00d96b669def32ed87ecc1a17 100644 (file)
@@ -74,9 +74,11 @@ if ($_POST && !$error) {
                dump_table($_GET["select"], "");
                $query = "SELECT " . ($select ? implode(", ", $select) : "*") . " FROM " . idf_escape($_GET["select"]);
                if (is_array($_POST["check"])) {
+                       $union = array();
                        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 {
                        dump_data($_GET["select"], "INSERT", $query . ($where ? " WHERE " . implode(" AND ", $where) : ""));
                }