Disallow subtraction on unsigned columns:
authorRoland Häder <roland@mxchange.org>
Sat, 30 Nov 2013 21:31:21 +0000 (21:31 +0000)
committerRoland Häder <roland@mxchange.org>
Sat, 30 Nov 2013 21:31:21 +0000 (21:31 +0000)
When you use subtraction between integer values where one is of type
UNSIGNED, the result is unsigned unless the NO_UNSIGNED_SUBTRACTION SQL
mode is enabled. See Section 12.10, “Cast Functions and Operators”.

inc/db/lib-mysql3.php
inc/db/lib-mysqli.php

index 24fb6e42c869ecb996f84d3904c7ec0d76591213..fd86300e36f564c9617c005197002a3a793df0bd 100644 (file)
@@ -231,6 +231,9 @@ function sqlConnectToDatabase ($host, $login, $password, $file, $line) {
        `character_set_connection`='utf8',
        `character_set_database`='utf8',
        `character_set_server`='utf8'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
        `character_set_connection`='utf8',
        `character_set_database`='utf8',
        `character_set_server`='utf8'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
+
+               // Disallow subtraction for unsigned columns
+               sqlQuery("SET `sql_mode`='NO_UNSIGNED_SUBTRACTION'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
        } // END - if
 
        // Return the resource
        } // END - if
 
        // Return the resource
index 27798e9bb278d18d779545955df0261cf1261b95..9a1be873010ff6d78a9cef318bfa8739c8d03437 100644 (file)
@@ -218,6 +218,9 @@ function sqlConnectToDatabase ($host, $login, $password, $file, $line) {
        `character_set_connection`='utf8',
        `character_set_database`='utf8',
        `character_set_server`='utf8'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
        `character_set_connection`='utf8',
        `character_set_database`='utf8',
        `character_set_server`='utf8'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
+
+               // Disallow subtraction for unsigned columns
+               sqlQuery("SET `sql_mode`='NO_UNSIGNED_SUBTRACTION'", $file . ':' . __FUNCTION__, $line . ':' . __LINE__);
        } // END - if
 
        // Any errors encountered?
        } // END - if
 
        // Any errors encountered?