X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fdba.php;h=16d2dc54d9cc1a362028699c974f41a8299174fb;hb=979fc6d38a842373cfaf17b18daadea003761ed9;hp=36986ebc7c549d7e82289dce509445bd5541edc2;hpb=b429b856806fb0d0481c11a8630b36dbbea7aedf;p=friendica.git diff --git a/include/dba.php b/include/dba.php index 36986ebc7c..16d2dc54d9 100644 --- a/include/dba.php +++ b/include/dba.php @@ -34,7 +34,7 @@ class dba { public $connected = false; public $error = false; - function __construct($server,$user,$pass,$db,$install = false) { + function __construct($server, $user, $pass, $db, $install = false) { global $a; $stamp1 = microtime(true); @@ -80,8 +80,9 @@ class dba { } if (!$this->connected) { $this->db = null; - if (!$install) + if (!$install) { system_unavailable(); + } } $a->save_timestamp($stamp1, "network"); @@ -108,14 +109,26 @@ class dba { return $return; } + /** + * @brief Returns the selected database name + * + * @return string + */ + public function database_name() { + $r = $this->q("SELECT DATABASE() AS `db`"); + + return $r[0]['db']; + } + /** * @brief Returns the number of rows * * @return integer */ public function num_rows() { - if (!$this->result) + if (!$this->result) { return 0; + } if ($this->mysqli) { $return = $this->result->num_rows; @@ -128,8 +141,9 @@ class dba { public function q($sql, $onlyquery = false) { global $a; - if ((!$this->db) || (!$this->connected)) + if (!$this->db || !$this->connected) { return false; + } $this->error = ''; @@ -139,13 +153,13 @@ class dba { } else { $connected = mysql_ping($this->db); } - $connstr = ($connected ? "Connected": "Disonnected"); + $connstr = ($connected ? "Connected" : "Disonnected"); $stamp1 = microtime(true); $orig_sql = $sql; - if (x($a->config,'system') && x($a->config['system'],'db_callstack')) { + if (x($a->config,'system') && x($a->config['system'], 'db_callstack')) { $sql = "/*".$a->callstack()." */ ".$sql; } @@ -159,9 +173,9 @@ class dba { $a->save_timestamp($stamp1, "database"); - if (strtolower(substr($orig_sql, 0, 6)) != "select") + if (strtolower(substr($orig_sql, 0, 6)) != "select") { $a->save_timestamp($stamp1, "database_write"); - + } if (x($a->config,'system') && x($a->config['system'],'db_log')) { if (($duration > $a->config["system"]["db_loglimit"])) { $duration = round($duration, 3); @@ -218,13 +232,14 @@ class dba { if ($result === false) { logger('dba: ' . printable($sql) . ' returned false.' . "\n" . $this->error); - if (file_exists('dbfail.out')) + if (file_exists('dbfail.out')) { file_put_contents('dbfail.out', datetime_convert() . "\n" . printable($sql) . ' returned false' . "\n" . $this->error . "\n", FILE_APPEND); + } } - if (($result === true) || ($result === false)) + if (($result === true) || ($result === false)) { return $result; - + } if ($onlyquery) { $this->result = $result; return true; @@ -247,15 +262,16 @@ class dba { //$a->save_timestamp($stamp1, "database"); - if ($this->debug) + if ($this->debug) { logger('dba: ' . printable(print_r($r, true))); + } return($r); } public function qfetch() { $x = false; - if ($this->result) + if ($this->result) { if ($this->mysqli) { if ($this->result->num_rows) $x = $this->result->fetch_array(MYSQLI_ASSOC); @@ -263,17 +279,18 @@ class dba { if (mysql_num_rows($this->result)) $x = mysql_fetch_array($this->result, MYSQL_ASSOC); } - + } return($x); } public function qclose() { - if ($this->result) + if ($this->result) { if ($this->mysqli) { $this->result->free_result(); } else { mysql_free_result($this->result); } + } } public function dbg($dbg) { @@ -314,8 +331,9 @@ if (! function_exists('printable')) { function printable($s) { $s = preg_replace("~([\x01-\x08\x0E-\x0F\x10-\x1F\x7F-\xFF])~",".", $s); $s = str_replace("\x00",'.',$s); - if (x($_SERVER,'SERVER_NAME')) + if (x($_SERVER,'SERVER_NAME')) { $s = escape_tags($s); + } return $s; }} @@ -323,8 +341,9 @@ function printable($s) { if (! function_exists('dbg')) { function dbg($state) { global $db; - if ($db) - $db->dbg($state); + if ($db) { + $db->dbg($state); + } }} if (! function_exists('dbesc')) { @@ -389,9 +408,9 @@ function qu($sql) { $stmt = @vsprintf($sql,$args); // Disabled warnings if ($stmt === false) logger('dba: vsprintf error: ' . print_r(debug_backtrace(),true), LOGGER_DEBUG); - $db->q("SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"); + $db->q("SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;"); $retval = $db->q($stmt); - $db->q("COMMIT;"); + $db->q("SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;"); return $retval; }