]> git.joonet.de Git - adminer.git/commitdiff
Use tab in export
authorjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 4 Aug 2009 11:13:35 +0000 (11:13 +0000)
committerjakubvrana <jakubvrana@7c3ca157-0c34-0410-bff1-cbf682f78f5c>
Tue, 4 Aug 2009 11:13:35 +0000 (11:13 +0000)
Quote all non-numeric columns

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@960 7c3ca157-0c34-0410-bff1-cbf682f78f5c

adminer/include/export.inc.php

index f96aa650c7a4615ab34371521521ae35d0825006..ab11870d2e2f2bc3182c626b53f6d663c61425e4 100644 (file)
@@ -104,6 +104,7 @@ function dump_data($table, $style, $select = "") {
                }
                $result = $dbh->query(($select ? $select : "SELECT * FROM " . idf_escape($table))); //! enum and set as numbers, binary as _binary, microtime
                if ($result) {
+                       $fields = fields($table);
                        $length = 0;
                        while ($row = $result->fetch_assoc()) {
                                if ($_POST["format"] == "csv") {
@@ -112,16 +113,17 @@ function dump_data($table, $style, $select = "") {
                                        $insert = "INSERT INTO " . idf_escape($table) . " (" . implode(", ", array_map('idf_escape', array_keys($row))) . ") VALUES";
                                        $row2 = array();
                                        foreach ($row as $key => $val) {
-                                               $row2[$key] = (isset($val) ? (ereg('^(0|-?[1-9][0-9]*(\\.[0-9]+)?|0\\.[0-9]+)$', $val) ? $val : $dbh->quote($val)) : "NULL"); // strings -0, -0.0, 1., 01, .5 would translate to 0, 0.0, 1, 1, 0.5
+                                               $row2[$key] = (isset($val) ? (ereg('int|float|double|decimal', $fields[$key]["type"]) ? $val : $dbh->quote($val)) : "NULL"); //! columns looking like functions
                                        }
+                                       $s = implode(",\t", $row2);
                                        if ($style == "INSERT+UPDATE") {
                                                $set = array();
-                                               foreach ($row as $key => $val) {
-                                                       $set[] = idf_escape($key) . " = " . (isset($val) ? $dbh->quote($val) : "NULL");
+                                               foreach ($row2 as $key => $val) {
+                                                       $set[] = idf_escape($key) . " = $val";
                                                }
-                                               echo "$insert (" . implode(", ", $row2) . ") ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
+                                               echo "$insert ($s) ON DUPLICATE KEY UPDATE " . implode(", ", $set) . ";\n";
                                        } else {
-                                               $s = "\n(" . implode(", ", $row2) . ")";
+                                               $s = "\n($s)";
                                                if (!$length) {
                                                        echo $insert . $s;
                                                        $length = strlen($insert) + strlen($s);