💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
和数据库直接接触的类,只是封装了增删改查。 ~~~ <?php //判断当前请求是否正常,如果不是通过index.php进行访问的,就退出系统 if(!defined('ACCESS')) die('Hacking'); class Db{ public $conn; public $host; public $port; public $user; public $password; public $db; public $charset; /* * 构造函数,同时连接数据库 * @param string 主机名 * @param string 端口号 * @param string 用户名 * @param string 密码 * @param string 数据库 * @param string 编码方式 */ public function __construct($arr=array()){ //从配置文件中获取必要信息 $this->host=isset($arr['host']) ? $arr['host'] : $GLOBALS['config']['mysql']['host']; $this->port=isset($arr['port']) ? $arr['port'] : $GLOBALS['config']['mysql']['port']; $this->user=isset($arr['user']) ? $arr['user'] : $GLOBALS['config']['mysql']['user']; $this->password=isset($arr['password']) ? $arr['password'] : $GLOBALS['config']['mysql']['password']; $this->db=isset($arr['db']) ? $arr['db'] : $GLOBALS['config']['mysql']['db']; $this->charset=isset($arr['charset']) ? $arr['charset'] : $GLOBALS['config']['mysql']['charset']; //连接数据库 $this->connect_db(); } /* * 连接数据库 */ public function connect_db(){ $this->conn=mysql_connect($this->host.":".$this->port,$this->user,$this->password); if (!$this->conn){ die("连接数据库失败:".mysql_error()); } mysql_select_db($this->db); mysql_query("set names {$this->charset}"); } /* * 操作dql查询语句 */ public function execute_dql($sql){ $res=mysql_query($sql,$this->conn) or die(mysql_errno().":".mysql_error()); $i=0; $arr=array(); while ($row=mysql_fetch_assoc($res)){ //将结果集存放在一个数组里面,这样就用完结果集了 $arr[$i++]=$row; } mysql_free_result($res); //关闭结果集,释放资源 return $arr; } /* * 操作dml语句 */ public function execute_dml($sql){ $res=mysql_query($sql,$this->conn) or die(mysql_errno().":".mysql_error()); if (!$res) { //失败 return 0; }else{ if (mysql_affected_rows($this->conn)>0){ //成功,并且修改了数据的数据 return 1; }else { //成功,但是没有影响任何一行,语句正确不一定有真正的操作到了数据库的数据 return 2; } } } //关闭连接 public function close_connect(){ if (!empty($this->conn)) { //先判断一下,如果还连着,就断掉 mysql_close($this->conn); } } } ~~~ >[info]如果用户连接数据库时没有自定义连接参数,就从配置文件中获取 >[info]调用方法`execute_dql`后,将查询得到的结果集放在到了二维数组中返回。 mysqli方式 ~~~ <?php //判断当前请求是否正常,如果不是通过index.php进行访问的,就退出系统 if(!defined('ACCESS')) die('Hacking'); class Db{ public $mysqli; public $host; public $port; public $user; public $password; public $db; public $charset; /* * 构造函数,同时连接数据库 * @param string 主机名 * @param string 端口号 * @param string 用户名 * @param string 密码 * @param string 数据库 * @param string 编码方式 */ public function __construct($arr=array()){ //从配置文件中获取必要信息 $this->host=$GLOBALS['config']['mysql']['host']; $this->port=$GLOBALS['config']['mysql']['port']; $this->user=$GLOBALS['config']['mysql']['user']; $this->password=$GLOBALS['config']['mysql']['password']; $this->db=$GLOBALS['config']['mysql']['db']; $this->charset=$GLOBALS['config']['mysql']['charset']; //连接数据库 $this->connect_db(); } /* * 连接数据库 */ public function connect_db(){ $this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->db); if ($this->mysqli->connect_error) { die("连接数据库失败:".$mysqli->connect_error); } if (!$this->mysqli->set_charset("utf8")) { die("设置默认字符编码失败:".$mysqli->error); } } /* * 操作mysqli预处理 */ public function execute_prepare($sql){ $stmt = $this->mysqli->prepare($sql); return $stmt; } /* * 执行sql查询语句 */ public function execute_dql($stmt){ $stmt->execute(); $result = $stmt->get_result()->fetch_all(); //关闭结果集 $stmt->free_result(); $stmt->close(); //操作完成数据库后,要及时关闭连接,不然比较浪费资源。还有如果不关闭,插入一条记录时可能会变成插入两条 $this->mysqli->close(); return $result; } /* * 操作dml语句 */ public function execute_dml($stmt){ $res=$stmt->execute(); if(!$res){ //失败 $stmt->close(); $this->mysqli->close(); return 0; }else{ if($stmt->affected_rows>0){ //成功,并且修改了数据的数据 $stmt->close(); $this->mysqli->close(); return 1; }else{ //成功,但是没有影响任何一行,语句正确不一定有真正的操作到了数据库的数据 $stmt->close(); $this->mysqli->close(); return 2; } } } } ~~~