host = $conf['host']; $this->port = $conf['port']; $this->user = $conf['user']; $this->pwd = $conf['pwd']; $this->database = $conf['db_name']; if(empty($conf['db_charset'])){ $this->db_charset = 'utf8'; } else { $this->db_charset = strtolower($conf['db_charset']); } $this->init_connect(); $this->select_db(); } /** * 初始化数据库连接 无返回值 */ private function init_connect() { $server = $this->host.":".$this->port; $this->conn = mysqli_connect($server, $this->user, $this->pwd,$this->database); if (mysqli_connect_errno($this->conn)) { echo "连接 MySQL 失败: " . mysqli_connect_error(); } } /** * 选择要访问的数据库 */ private function select_db() { $set_sql = "set character set ".$this->db_charset; mysqli_query($this->conn,$set_sql); $set_sql = " set names ".$this->db_charset; mysqli_query($this->conn,$set_sql); } /** * 执行查询语句。返回结果集二维数组 * SELECT,SHOW,EXPLAIN 或 DESCRIBE */ public function query($sql) { $rs = mysqli_query ($this->conn,$sql); //$this->save_log($sql); if(mysqli_num_rows($rs)>0) { while ($row = mysqli_fetch_array($rs, MYSQLI_ASSOC)) { $records_arr[] = $row; } return $records_arr; } else { return null; } } /** * 查询单个记录的第一列,例如 * @param string $sql */ public function query_first_column($sql) { if(strrpos(strtolower($sql),'union')!== false){ Log::save_run_log($sql, 'hacker'); } $rs = mysqli_query ($this->conn,$sql); if(mysqli_num_rows($rs)>0) { if ($row = mysqli_fetch_array($rs, MYSQL_ASSOC)) { foreach ($row as $key => $val){ return $val; } return null; } else { return null; } } else { return null; } } /** * 执行数据库操作脚本语句 返回成功或失败 : TRUE OR FALSE * update */ public function execute_sql($sql){ return $this->exe_sql_and_log($sql); } /** * 执行插入操作返回数据id或失败 : ID OR FALSE * insert */ public function insert_sql($sql){ $rs = $this->exe_sql_and_log($sql); if($rs){ $id = mysqli_insert_id($this->conn); return $id; }else{ return false; } } /** * 返回成功或失败 : TRUE OR FALSE */ private function exe_sql_and_log($sql) { $rs = mysqli_query($this->conn,$sql); $this->save_log($sql); if($rs){ return true; }else{ return false; } } /** * tostring 方法,查看本实例的连接参数。 */ public function to_string(){ return "host:$this->host|port:$this->port|user:$this->user|pwd:$this->pwd|database:$this->database|chartset:$this->db_charset
"; } public function save_log($sql){ $info = mysqli_errno($this->conn) . "|$sql|" . mysqli_error($this->conn); Log::save_run_log($info, 'db'); } public function close(){ mysqli_close($this->conn); } } ?>