From a437efbbb5f40e95e6a3ec75dc0da042a83d5f74 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 27 Feb 2020 10:32:16 +0100 Subject: [inc/Database] Convert bool params to 1 or 0 PDO unfortunately only does (string) for boolean params, which converts false to '' instead of '0'. This breaks MariaDB in strict mode. --- inc/database.inc.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/inc/database.inc.php b/inc/database.inc.php index 3b2414b5..7d9cbce3 100644 --- a/inc/database.inc.php +++ b/inc/database.inc.php @@ -141,6 +141,15 @@ class Database // Support passing nested arrays for IN statements, automagically refactor $oquery = $query; self::handleArrayArgument($query, $args); + // Now turn any bools into 0 or 1, since PDO unfortunately only does (string), which + // results in an empty string for false + foreach ($args as &$arg) { + if ($arg === false) { + $arg = '0'; + } elseif ($arg === true) { + $arg = '1'; + } + } try { if (!isset(self::$statements[$query])) { self::$statements[$query] = self::$dbh->prepare($query); -- cgit v1.2.3-55-g7522