diff --git a/include/class.orm.php b/include/class.orm.php index 2d4938d9586adb239f5ba043b9395e75b68b867d..c71f0e1e60f4e8e5e0aac99a8bfca98d89fcba8b 100644 --- a/include/class.orm.php +++ b/include/class.orm.php @@ -2603,7 +2603,7 @@ class MySqlCompiler extends SqlCompiler { $exec = $q->getQuery(array('nosort' => true)); $exec->sql = 'SELECT COUNT(*) FROM ('.$exec->sql.') __'; $row = $exec->getRow(); - return $row ? $row[0] : null; + return is_array($row) ? (int) $row[0] : null; } function compileSelect($queryset) { @@ -3064,13 +3064,18 @@ class MySqlPreparedExecutor { return preg_replace_callback("/:(\d+)(?=([^']*'[^']*')*[^']*$)/", function($m) use ($self) { $p = $self->params[$m[1]-1]; - if ($p instanceof DateTime) { + switch (true) { + case is_bool($p): + $p = (int) $p; + case is_int($p): + case is_float($p): + return $p; + + case $p instanceof DateTime: $p = $p->format('Y-m-d H:i:s'); + default: + return db_real_escape($p, true); } - elseif ($p === false) { - $p = 0; - } - return db_real_escape($p, is_string($p)); }, $this->sql); } }