]> git.joonet.de Git - adminer.git/commitdiff
Do not edit NULL values by Modify (fix #967)
authorJakub Vrana <jakub@vrana.cz>
Thu, 3 Apr 2025 06:57:49 +0000 (08:57 +0200)
committerJakub Vrana <jakub@vrana.cz>
Thu, 3 Apr 2025 06:57:49 +0000 (08:57 +0200)
CHANGELOG.md
adminer/select.inc.php

index b57798318e79b8d176a4a26df23b63a69a4f5f30..9ed31ddfa5944264f59260a9b2670fa1ddee23d6 100644 (file)
@@ -1,4 +1,5 @@
 ## Adminer dev
+- Do not edit NULL values by Modify (bug #967)
 - MySQL: Display number of found rows in group queries (regression from 5.1.1)
 
 ## Adminer 5.1.1 (released 2025-04-02)
index 850960fbc47725f8771340fe29c5b005304c21d0..f9d8755c11fdbb03ccf9589958e5a28ae1513448 100644 (file)
@@ -452,20 +452,20 @@ if (!$columns && support("table")) {
                                                        }
                                                }
 
-                                               $val = select_value($val, $link, $field, $text_length);
+                                               $html = select_value($val, $link, $field, $text_length);
                                                $id = h("val[$unique_idf][" . bracket_escape($key) . "]");
-                                               $value = idx(idx($_POST["val"], $unique_idf), bracket_escape($key));
-                                               $editable = !is_array($row[$key]) && is_utf8($val) && $rows[$n][$key] == $row[$key] && !$functions[$key] && !$field["generated"];
+                                               $posted = idx(idx($_POST["val"], $unique_idf), bracket_escape($key));
+                                               $editable = !is_array($row[$key]) && is_utf8($html) && $rows[$n][$key] == $row[$key] && !$functions[$key] && !$field["generated"];
                                                $text = preg_match('~text|json|lob~', $field["type"]);
-                                               echo "<td id='$id'" . (preg_match(number_type(), $field["type"]) && ($val == '<i>NULL</i>' || is_numeric(strip_tags($val))) ? " class='number'" : "");
-                                               if (($_GET["modify"] && $editable) || $value !== null) {
-                                                       $h_value = h($value !== null ? $value : $row[$key]);
+                                               echo "<td id='$id'" . (preg_match(number_type(), $field["type"]) && ($val === null || is_numeric(strip_tags($html))) ? " class='number'" : "");
+                                               if (($_GET["modify"] && $editable && $val !== null) || $posted !== null) {
+                                                       $h_value = h($posted !== null ? $posted : $row[$key]);
                                                        echo ">" . ($text ? "<textarea name='$id' cols='30' rows='" . (substr_count($row[$key], "\n") + 1) . "'>$h_value</textarea>" : "<input name='$id' value='$h_value' size='$lengths[$key]'>");
                                                } else {
-                                                       $long = strpos($val, "<i>…</i>");
+                                                       $long = strpos($html, "<i>…</i>");
                                                        echo " data-text='" . ($long ? 2 : ($text ? 1 : 0)) . "'"
                                                                . ($editable ? "" : " data-warning='" . h(lang('Use edit link to modify this value.')) . "'")
-                                                               . ">$val"
+                                                               . ">$html"
                                                        ;
                                                }
                                        }