1
0
mirror of https://github.com/vrana/adminer.git synced 2025-08-13 10:04:07 +02:00

NULL and \r in CSV import

git-svn-id: https://adminer.svn.sourceforge.net/svnroot/adminer/trunk@1058 7c3ca157-0c34-0410-bff1-cbf682f78f5c
This commit is contained in:
jakubvrana
2009-09-02 09:35:50 +00:00
parent 84a9bfa82c
commit 17a3c5bdce

View File

@@ -90,7 +90,7 @@ if ($_POST && !$error) {
$file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set $file = preg_replace("~^\xEF\xBB\xBF~", '', $file); //! character set
$result = true; $result = true;
$cols = array_keys($fields); $cols = array_keys($fields);
preg_match_all('~("[^"]*"|[^"\\n])+~', $file, $matches); preg_match_all('~("[^"]*"|[^"\\r\\n])+~', $file, $matches);
$affected = count($matches[0]); $affected = count($matches[0]);
foreach ($matches[0] as $key => $val) { foreach ($matches[0] as $key => $val) {
preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2); preg_match_all('~(("[^"]*")+|[^,]*),~', "$val,", $matches2);
@@ -101,7 +101,7 @@ if ($_POST && !$error) {
} else { } else {
$set = ""; $set = "";
foreach ($matches2[1] as $i => $col) { foreach ($matches2[1] as $i => $col) {
$set .= ", " . idf_escape($cols[$i]) . " = " . (!strlen($col) ? "NULL" : $dbh->quote(str_replace('""', '"', preg_replace('~^"|"$~', '', $col)))); $set .= ", " . idf_escape($cols[$i]) . " = " . (!strlen($col) && $fields[$cols[$i]]["null"] ? "NULL" : $dbh->quote(str_replace('""', '"', preg_replace('~^"|"$~', '', $col))));
} }
$set = substr($set, 2); $set = substr($set, 2);
$result = queries("INSERT INTO " . idf_escape($_GET["select"]) . " SET $set ON DUPLICATE KEY UPDATE $set"); $result = queries("INSERT INTO " . idf_escape($_GET["select"]) . " SET $set ON DUPLICATE KEY UPDATE $set");