_mysqli = new \MySQLi($option['host'], $option['username'], $option['password'], $option['dbname'],$option['port']); if ($this->_mysqli->connect_errno) { $this->error = '数据库连接失败 ' . $this->_mysqli->connect_error; return; } $this->_mysqli->set_charset($option['charset']); } /** * 防止克隆 */ private function __clone(){} /** * 从数据库中取出一条结果 * @param string $sql 查询的语句 * @return array 成功返回一条结果,失败返回false */ public function fetch($sql = ''){ if(!$res = $this->_mysqli->query($sql)){ $this->error = 'sql语句执行失败!' . $sql . ' '.$this->_mysqli->error; return false; } $arr = $res->fetch_assoc(); $res->free(); return $arr; } /** * 从数据库中取出所有结果 * @param string $sql 查询的SQL语句 * @return array 成功返回所有结果,失败返回false */ public function fetchAll($sql = ''){ $arr = array(); $res = $this->_mysqli->query($sql); if(!$res){ $this->error = 'sql语句执行失败!' . $sql . ' '.$this->_mysqli->error; return false; } while ($row = $res->fetch_assoc()) { $arr[] = $row; } $res->free(); return $arr; } /** * 完成数据库的dml操作 * @param string $sql 要执行的SQL语句 * @return boot 成功返回true,失败返回false */ public function query($sql = ''){ $res = $this->_mysqli->query($sql); if(!$res){ $this->error = 'sql语句执行失败!' . $sql . ' '.$this->_mysqli->error; return false; } return $res; } /** * 获取最后一次插入的主键ID * @return int 主键id */ public function getInsertId(){ return $this->_mysqli->insert_id; } /** * 返回受影响的记录数 * @return int 数量 */ public function getAffectedRows(){ return $this->_mysqli->affected_rows; } /** * 返回mysql数据版本 * @return int 版本号 */ public function getVersion(){ return $this->fetch('select VERSION()')['VERSION()']; } /** * 开启一个事务 * @return boot 成功返回true,失败防护false */ public function beginTrans(){ return $this->_mysqli->autocommit(false); } /** * 提交当前事务 * @return boot 成功返回true,失败返回false */ public function commit(){ return $this->_mysqli->commit(); } /** * 回滚当前事务 * @return boot 成功返回true,失败返回false */ public function rollback(){ return $this->_mysqli->rollback(); } /** * 转义在SQL语句中使用的特殊字符 * @param string $str 字符串 * @return string/boot 成功返回转义的字符串,失败返回false */ public function escapeString($str){ return $this->_mysqli->real_escape_string($str); } /** * 资源回收 */ public function close(){ if(is_resource(self::$_instance)){ self::$_instance->close(); self::$_instance = null; $this->_mysqli = null; } } /** * 析构函数 */ public function __destruct(){ $this->close(); } }