X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FDatabase%2FDefinition%2FDbaDefinition.php;h=3d3a2fa928648060b1be9cfd7e02328debeb7cd1;hb=53aba7b37e019d4093d0985e394d393ae77ef0df;hp=9f42d176a7658be08add0004db5d6d3bb94176c7;hpb=a910fd8864f5f1e9c35e9065abad24353793f313;p=friendica.git diff --git a/src/Database/Definition/DbaDefinition.php b/src/Database/Definition/DbaDefinition.php index 9f42d176a7..3d3a2fa928 100644 --- a/src/Database/Definition/DbaDefinition.php +++ b/src/Database/Definition/DbaDefinition.php @@ -1,6 +1,6 @@ definition; if (empty($definition[$table])) { @@ -81,11 +82,15 @@ class DbaDefinition // Assign all field that are present in the table foreach ($fieldNames as $field) { if (isset($data[$field])) { - // Limit the length of varchar, varbinary, char and binrary fields + // Limit the length of varchar, varbinary, char and binary fields if (is_string($data[$field]) && preg_match("/char\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) { $data[$field] = mb_substr($data[$field], 0, $result[1]); } elseif (is_string($data[$field]) && preg_match("/binary\((\d*)\)/", $definition[$table]['fields'][$field]['type'], $result)) { $data[$field] = substr($data[$field], 0, $result[1]); + } elseif (is_numeric($data[$field]) && $definition[$table]['fields'][$field]['type'] === 'int') { + $data[$field] = min(max((int)$data[$field], -2147483648), 2147483647); + } elseif (is_numeric($data[$field]) && $definition[$table]['fields'][$field]['type'] === 'int unsigned') { + $data[$field] = min(max((int)$data[$field], 0), 4294967295); } $fields[$field] = $data[$field]; }