"localhost", "serverport"=> "3306", "username" => false, "password" => false, "database" => false, "persist" => false, "dieonerror"=> false, "showerror" => false, "error_file"=> true ); function __construct() { global $db_config; $this->settings = array_merge($this->settings, $db_config); if($this->settings["error_file"] === true) $this->settings["error_file"] = dirname(__FILE__)."/__mysql_errors.log"; } function connect() { $this->data = new mysqli( $this->settings["servername"], $this->settings["username"], $this->settings["password"], $this->settings["database"], $this->settings["serverport"] ); if(mysqli_connect_errno()) { $this->error("Connection error: ".mysqli_connect_error() ); return false; } if(!$this->data->set_charset("utf8")) { $this->error("Error loading character set utf8"); return false; } return true; } function query($sql) { if(!$this->data && !$this->connect()) { $this->error("Could node connect for query: ".$sql); return false; } //echo $sql."
:"; if(!($this->result = $this->data->query($sql))) $this->error($sql); return ($this->result) ? true : false; } function nextr(){ if(!$this->result) { $this->error("No query pending"); return false; } unset($this->row); $this->row = $this->result->fetch_array(MYSQL_BOTH); return ($this->row) ? true : false ; } function get_row($mode = "both") { if(!$this->row) return false; $return = array(); switch($mode) { case "assoc": foreach($this->row as $k => $v) { if(!is_int($k)) $return[$k] = $v; } break; case "num": foreach($this->row as $k => $v) { if(is_int($k)) $return[$k] = $v; } break; default: $return = $this->row; break; } return array_map("stripslashes",$return); } function get_all($mode = "both", $key = false) { if(!$this->result) { $this->error("No query pending"); return false; } $return = array(); while($this->nextr()) { if($key !== false) $return[$this->f($key)] = $this->get_row($mode); else $return[] = $this->get_row($mode); } return $return; } function f($index) { return stripslashes($this->row[$index]); } function go_to($row) { if(!$this->result) { $this->error("No query pending"); return false; } if(!$this->data->data_seek($row)) $this->error(); } function nf() { if (!$this->result) { $this->error("nf: no result set"); return false; } return $this->result->num_rows; } function af() { return $this->data->affected_rows; } function error($string = "") { $error = $this->data->error; if($this->settings["show_error"]) echo $error; if($this->settings["error_file"] !== false) { $handle = @fopen($this->settings["error_file"], "a+"); if($handle) { @fwrite($handle, "[".date("Y-m-d H:i:s")."] ".$string." <".$error.">\n"); @fclose($handle); } } if($this->settings["dieonerror"]) { if(isset($this->result)) $this->result->free(); @$this->data->close(); die(); } } function insert_id() { return $this->data->insert_id; } function escape($string) { if(!$this->data) return addslashes($string); return $this->data->escape_string($string); } function destroy() { if(isset($this->result)) $this->result->free(); if($this->data) $this->data->close(); } }