]> git.mxchange.org Git - friendica.git/commitdiff
Check for floats and enable native prepares
authorMichael <heluecht@pirati.ca>
Thu, 21 Jun 2018 20:33:27 +0000 (20:33 +0000)
committerMichael <heluecht@pirati.ca>
Thu, 21 Jun 2018 20:33:27 +0000 (20:33 +0000)
include/dba.php

index 47471ae952838e1f418c86ab13c276f9ac4de5d5..847d1f0b5f6e192b49a0349ac17fc82465c38ce1 100644 (file)
@@ -76,6 +76,8 @@ class dba {
                        }
                        try {
                                self::$db = @new PDO($connect, $user, $pass);
+                               self::$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
+                               self::$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
                                self::$connected = true;
                        } catch (PDOException $e) {
                        }
@@ -1298,12 +1300,18 @@ class dba {
                                        if (is_array($value)) {
                                                // Check if there are integer values in the parameters
                                                $is_int = false;
+                                               $is_float = false;
                                                $is_alpha = false;
                                                foreach ($value as $single_value) {
                                                        if (is_int($single_value)) {
                                                                $is_int = true;
                                                        }
 
+                                                       // To prevent to round floats we look for them
+                                                       if (is_float($single_value)) {
+                                                               $is_float = true;
+                                                       }
+
                                                        // Is any non numeric value present?
                                                        if (!is_numeric($single_value)) {
                                                                $is_alpha = true;
@@ -1314,7 +1322,7 @@ class dba {
                                                if ($is_int) {
                                                        $casted = [];
                                                        foreach ($value as $single_value) {
-                                                               if (!$is_alpha) {
+                                                               if (!$is_alpha && !$is_float) {
                                                                        $casted[] = (int)$single_value;
                                                                } else {
                                                                        $casted[] = (string)$single_value;