From 261d7435c01348a59ea590442e15c00a0bfafdf5 Mon Sep 17 00:00:00 2001 From: Michael Date: Thu, 21 Jun 2018 20:33:27 +0000 Subject: [PATCH] Check for floats and enable native prepares --- include/dba.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/include/dba.php b/include/dba.php index 47471ae95..847d1f0b5 100644 --- a/include/dba.php +++ b/include/dba.php @@ -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;