$set = array();
foreach ($fields as $name => $field) {
$val = process_input($name, $field);
- if ($val !== false) {
- if (!isset($_GET["default"])) {
- $set[] = idf_escape($name) . " = $val";
- } elseif ($field["type"] == "timestamp") {
+ if (!isset($_GET["default"])) {
+ if ($val !== false || !$update) {
+ $set[] = idf_escape($name) . " = " . ($val !== false ? $val : "''");
+ }
+ } elseif ($val !== false) {
+ if ($field["type"] == "timestamp") {
$set[] = " MODIFY " . idf_escape($name) . " timestamp" . ($field["null"] ? " NULL" : "") . " DEFAULT $val" . ($_POST["on_update"][bracket_escape($name)] ? " ON UPDATE CURRENT_TIMESTAMP" : "");
} else {
$set[] = " ALTER " . idf_escape($name) . ($val == ($field["null"] || $field["type"] == "enum" ? "NULL" : "''") ? " DROP DEFAULT" : " SET DEFAULT $val");
} elseif ($where) {
$select = array();
foreach ($fields as $name => $field) {
- if (isset($field["privileges"]["select"]) && !preg_match('~binary|blob~', $field["type"]) && (!$_GET["clone"] || !$field["auto_increment"])) {
+ if (isset($field["privileges"]["select"]) && (!$_GET["clone"] || !$field["auto_increment"])) {
$select[] = ($field["type"] == "enum" || $field["type"] == "set" ? "1*" . idf_escape($name) . " AS " : "") . idf_escape($name);
}
}
return (isset($_GET["default"]) ? "'" . implode(",", array_map(array($mysql, 'escape_string'), (array) $value)) . "'" : array_sum((array) $value));
} elseif (preg_match('~binary|blob~', $field["type"])) {
$file = get_file($idf);
- if (!is_string($file) && ($file != UPLOAD_ERR_NO_FILE || !$field["null"])) {
+ if (!is_string($file)) {
return false; //! report errors
}
return "_binary'" . (is_string($file) ? $mysql->escape_string($file) : "") . "'";