diff --git a/src/Database/Database.php b/src/Database/Database.php index 0d02c4aef..a95b1ad69 100644 --- a/src/Database/Database.php +++ b/src/Database/Database.php @@ -64,7 +64,6 @@ class Database /** @var PDO|mysqli */ protected $connection; protected $driver; - protected $emulate_prepares = false; protected $pdo_emulate_prepares = false; private $error = false; private $errorno = 0; @@ -122,7 +121,6 @@ class Database $persistent = (bool)$this->configCache->get('database', 'persistent'); - $this->emulate_prepares = (bool)$this->configCache->get('database', 'emulate_prepares'); $this->pdo_emulate_prepares = (bool)$this->configCache->get('database', 'pdo_emulate_prepares'); if (!$this->configCache->get('database', 'disable_pdo') && class_exists('\PDO') && in_array('mysql', PDO::getAvailableDrivers())) { @@ -527,7 +525,7 @@ class Database switch ($this->driver) { case self::PDO: // If there are no arguments we use "query" - if ($this->emulate_prepares || count($args) == 0) { + if (count($args) == 0) { if (!$retval = $this->connection->query($this->replaceParameters($sql, $args))) { $errorInfo = $this->connection->errorInfo(); $this->error = $errorInfo[2]; @@ -577,7 +575,7 @@ class Database $can_be_prepared = in_array($command, ['select', 'update', 'insert', 'delete']); // The fallback routine is called as well when there are no arguments - if ($this->emulate_prepares || !$can_be_prepared || (count($args) == 0)) { + if (!$can_be_prepared || (count($args) == 0)) { $retval = $this->connection->query($this->replaceParameters($sql, $args)); if ($this->connection->errno) { $this->error = $this->connection->error; diff --git a/static/defaults.config.php b/static/defaults.config.php index 5b314f927..8997a60d7 100644 --- a/static/defaults.config.php +++ b/static/defaults.config.php @@ -53,15 +53,10 @@ return [ // Database connection charset. Changing this value will likely corrupt special characters. 'charset' => 'utf8mb4', - // emulate_prepares (Boolean) (Experimental) - // If enabled, prepared statements will be emulated. - // In combination with MySQLi this will cast all return values to strings. - 'emulate_prepares' => false, - - // pdo_emulate_prepares (Boolean) (Experimental) + // pdo_emulate_prepares (Boolean) // If enabled, the builtin emulation for prepared statements is used. - // Due to limitations of that emulation (all return values are casted as strings) - // this will most likely cause issues and should not be used on production systems. + // When enabled, a workaround is used to ensure that the returned field types are correct, + // since by standard all returned values are casted as strings. 'pdo_emulate_prepares' => false, // disable_pdo (Boolean)