From 9209d88c4a050dc16b9f147bbfe79dc8222694bf Mon Sep 17 00:00:00 2001 From: Michael Vogel Date: Thu, 1 Sep 2016 03:50:41 +0000 Subject: [PATCH] Set the charset for the SQL connection for new installations --- htconfig.php | 5 +++++ include/dba.php | 23 +++++++++++++++++++---- view/templates/htconfig.tpl | 5 +++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/htconfig.php b/htconfig.php index fe6c0d82ee..469fa7af61 100644 --- a/htconfig.php +++ b/htconfig.php @@ -16,6 +16,11 @@ $db_user = 'mysqlusername'; $db_pass = 'mysqlpassword'; $db_data = 'mysqldatabasename'; +// Set the database connection charset to UTF8. +// Changing this value will likely corrupt the special characters. +// You have been warned. +$a->config['system']['db_charset'] = "utf8mb4"; + // Choose a legal default timezone. If you are unsure, use "America/Los_Angeles". // It can be changed later and only applies to timestamps for anonymous viewers. diff --git a/include/dba.php b/include/dba.php index b0927265be..5e84b95df5 100644 --- a/include/dba.php +++ b/include/dba.php @@ -66,6 +66,8 @@ class dba { if(! mysqli_connect_errno()) { $this->connected = true; } + if (isset($a->config["system"]["db_charset"])) + $this->db->set_charset($a->config["system"]["db_charset"]); } else { $this->mysqli = false; @@ -73,6 +75,8 @@ class dba { if($this->db && mysql_select_db($db,$this->db)) { $this->connected = true; } + if (isset($a->config["system"]["db_charset"])) + mysql_set_charset($a->config["system"]["db_charset"], $this->db); } if(! $this->connected) { $this->db = null; @@ -95,6 +99,14 @@ class dba { $this->error = ''; + // Check the connection (This can reconnect the connection - if configured) + if ($this->mysqli) + $connected = $this->db->ping(); + else + $connected = mysql_ping($this->db); + + $connstr = ($connected ? "Connected": "Disonnected"); + $stamp1 = microtime(true); if($this->mysqli) @@ -122,14 +134,17 @@ class dba { } if($this->mysqli) { - if($this->db->errno) + if($this->db->errno) { $this->error = $this->db->error; + $this->errorno = $this->db->errno; + } + } elseif(mysql_errno($this->db)) { + $this->error = mysql_error($this->db); + $this->errorno = mysql_errno($this->db); } - elseif(mysql_errno($this->db)) - $this->error = mysql_error($this->db); if(strlen($this->error)) { - logger('dba: ' . $this->error); + logger('DB Error ('.$connstr.') '.$this->errorno.': '.$this->error); } if($this->debug) { diff --git a/view/templates/htconfig.tpl b/view/templates/htconfig.tpl index cbbd14dc4e..df793197ce 100644 --- a/view/templates/htconfig.tpl +++ b/view/templates/htconfig.tpl @@ -15,6 +15,11 @@ $db_user = '{{$dbuser}}'; $db_pass = '{{$dbpass}}'; $db_data = '{{$dbdata}}'; +// Set the database connection charset to UTF8. +// Changing this value will likely corrupt the special characters. +// You have been warned. +$a->config['system']['db_charset'] = "utf8mb4"; + // email adress for the system admin $a->config['admin_email'] = '{{$adminmail}}';