php教程--案例31(数据库操作类)
发布日期:2021-05-06 21:10:33 浏览次数:21 分类:技术文章

本文共 3395 字,大约阅读时间需要 11 分钟。

'localhost', 'port'=>'3306', 'user'=>'root', 'pwd'=>'mysql123', 'charset'=>'utf8', 'dbname'=>'test', ); //私有,数据库连接资源id private $link; //静态实例化变量 private static $instance; /** * @param $params */ //私有,初始化配置数组 private function initAttr($params) { $this->db_config = array_merge($this->db_config,$params); } /** * */ //私有,连接数据库 private function connectServer() { $host = $this->db_config['host']; $port = $this->db_config['port']; $user = $this->db_config['user']; $pwd = $this->db_config['pwd']; $dbname = $this->db_config['dbname']; if ($link = mysqli_connect("$host:$port","$user","$pwd","$dbname")) { $this->link = $link; } else { die('数据库连接失败'.mysqli_error($this->link)); } } /** * */ //私有,设置数据库字符集 private function setCharset() { $sql = "set names {$this->db_config['charset']}"; $this->query($sql); //mysqli_query($this->link,$sql); } /** * @return bool */ //私有,选择具体数据库 private function selectDefaultDb() { if($this->db_config['dbname'] == '') { return false; } $sql = "use {$this->db_config['dbname']}"; $this->query($sql); //mysqli_query($this->link,$sql); } /** * mysqldb constructor. * @param array $params * */ //构造函数 private function __construct($params = array()) { $this->initAttr($params); $this->connectServer(); $this->setCharset(); $this->selectDefaultDb(); } /** * @param $sql * @return bool|mysqli_result */ //执行查询 public function query($sql) { if($result = mysqli_query($this->link,$sql)) { return $result; } else { echo 'SQL执行失败:
'; echo '错误的SQL为'.$sql.'
'; echo '错误的代码为:',mysqli_errno($this->link),'
'; echo '错误的信息为:',mysqli_error($this->link),'
'; die(); } } /** * @param $sql * @return array|bool|null */ //取单行数据 public function fetchRow($sql) { if($result = $this->query($sql)) { $row = mysqli_fetch_array($result,MYSQLI_ASSOC); return $row; } else { return false; } } /** * @param $sql * @return array|bool */ //取多行数据 public function fetchAll($sql) { if($result = $this->query($sql)) { $rows = array(); while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)) { $rows[] = $row; } mysqli_free_result($result); return $rows; } else { return false; } } /** * @param $data * @return string */ //转义字符,防止sql注入 public function escapeString($data) { return mysqli_real_escape_string($this->link,$data); } /** * @param array $params * @return mysqldb */ //静态方法,获取唯一的数据库实例 public static function getInstance($params=array()) { if(!self::$instance instanceof self) { self::$instance = new self($params); } return self::$instance; } //克隆类的方法 public function __clone() { die('禁止复制此类'); }}

 

上一篇:php教程--案例32(类库自动加载)
下一篇:php教程--案例30(静态工具类)

发表评论

最新留言

很好
[***.229.124.182]2025年03月16日 19时54分32秒