
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('禁止复制此类'); }}
发表评论
最新留言
很好
[***.229.124.182]2025年03月16日 19时54分32秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
phpStudy for Linux (lnmp+lamp一键安装包)
2019-03-04
【安卓学习笔记】JAVA基础Lesson9-对象的转型
2019-03-04
本校暑假训练营11_Python数据分析入门7-网络1
2019-03-04
本校暑假训练营12_Python数据分析入门7-网络2
2019-03-04
数据库SQL实战3_获取所有非manager的员工emp_no
2019-03-04
JVM篇-结合源码分析垃圾收集器的类型
2019-03-04
RT -Thread Studio开发环境下使用W5500做TCP客户端
2019-03-04
Warning: The core is locked up的解决办法
2019-03-04
奔涌吧 后浪!!! 哔哩哔哩 何冰
2019-03-04
【JVM系列】JDK 内置工具
2019-03-04
JAVA 基础与进阶系列索引 -- JDK 源码学习系列 -- 并发
2019-03-04
网络编程系列索引 -- JAVA 网络编程系列
2019-03-04
【JDK源码分析系列】ArrayBlockingQueue源码分析
2019-03-04
【网络通信 -- 直播】音视频常见封装格式 -- MEPG2 TS
2019-03-04
【网络通信 -- 直播】音视频常见封装格式 -- FLV
2019-03-04
【C/C++基础进阶系列】C/C++ 对象模型 -- 类基础知识总结(三)
2019-03-04
【C/C++基础进阶系列】C/C++ 对象模型 -- 对象语义
2019-03-04
基于FPGA的HDMI信号采样原理
2019-03-04
Spring 与使用STOMP消息
2019-03-04
Linux 查看系统语言
2019-03-04