Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libraries/classes/InsertEdit.php5
-rw-r--r--test/classes/InsertEditTest.php120
2 files changed, 122 insertions, 3 deletions
diff --git a/libraries/classes/InsertEdit.php b/libraries/classes/InsertEdit.php
index 7ea09e576f..33b692777d 100644
--- a/libraries/classes/InsertEdit.php
+++ b/libraries/classes/InsertEdit.php
@@ -1674,9 +1674,8 @@ class InsertEdit
} elseif (
! (empty($multiEditFuncs[$key])
&& isset($multiEditColumnsPrev[$key])
- && (($currentValue === "'" . $this->dbi->escapeString($multiEditColumnsPrev[$key]) . "'")
- || ($currentValue === '0x' . $multiEditColumnsPrev[$key])))
- && $currentValue
+ && $currentValue === $multiEditColumnsPrev[$key])
+ && $currentValueAsAnArray !== ''
) {
// avoid setting a field to NULL when it's already NULL
// (field had the null checkbox before the update
diff --git a/test/classes/InsertEditTest.php b/test/classes/InsertEditTest.php
index 1c7ad8eee3..13ee204b74 100644
--- a/test/classes/InsertEditTest.php
+++ b/test/classes/InsertEditTest.php
@@ -2023,6 +2023,126 @@ class InsertEditTest extends AbstractTestCase
],
$result
);
+
+ // Test to see if a zero-string is not ignored
+ $result = $this->insertEdit->getQueryValuesForInsertAndUpdateInMultipleEdit(
+ $multi_edit_columns_name,
+ [],
+ '0',
+ [],
+ [],
+ false,
+ [],
+ [],
+ "'0'",
+ [],
+ '0',
+ []
+ );
+
+ $this->assertEquals(
+ [
+ ["`fld` = '0'"],
+ [],
+ ],
+ $result
+ );
+
+ // Can only happen when table contains blob field that was left unchanged during edit
+ $result = $this->insertEdit->getQueryValuesForInsertAndUpdateInMultipleEdit(
+ $multi_edit_columns_name,
+ [],
+ '',
+ [],
+ [],
+ false,
+ [],
+ [],
+ '',
+ [],
+ '0',
+ []
+ );
+
+ $this->assertEquals(
+ [
+ [],
+ [],
+ ],
+ $result
+ );
+
+ // Test to see if a field will be set to null when it wasn't null previously
+ $result = $this->insertEdit->getQueryValuesForInsertAndUpdateInMultipleEdit(
+ $multi_edit_columns_name,
+ ['on'],
+ '',
+ [],
+ [],
+ false,
+ [],
+ [],
+ 'NULL',
+ [],
+ '0',
+ []
+ );
+
+ $this->assertEquals(
+ [
+ ['`fld` = NULL'],
+ [],
+ ],
+ $result
+ );
+
+ // Test to see if a field will be ignored if it was null previously
+ $result = $this->insertEdit->getQueryValuesForInsertAndUpdateInMultipleEdit(
+ $multi_edit_columns_name,
+ ['on'],
+ '',
+ [],
+ [],
+ false,
+ [],
+ [],
+ 'NULL',
+ [],
+ '0',
+ ['on']
+ );
+
+ $this->assertEquals(
+ [
+ [],
+ [],
+ ],
+ $result
+ );
+
+ // Test to see if a field will be ignored if it the value is unchanged
+ $result = $this->insertEdit->getQueryValuesForInsertAndUpdateInMultipleEdit(
+ $multi_edit_columns_name,
+ [],
+ "a'b",
+ ["a'b"],
+ [],
+ false,
+ [],
+ [],
+ "'a\'b'",
+ [],
+ '0',
+ []
+ );
+
+ $this->assertEquals(
+ [
+ [],
+ [],
+ ],
+ $result
+ );
}
/**