热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL数据库操作类(PHP实现,支持连贯操作)【MySQL】

数据库|mysql教程连贯,数据库数据库-mysql教程使用过ThinkPHP框架的同学可能会对于其中数据库模型操作特别有好感,ThinkPHP提供了数据库操作的简单的操作,对于连

数据库|mysql教程MySQL数据库操作类(PHP实现,支持连贯操作)【MySQL】
连贯,数据库
数据库-mysql教程
使用过ThinkPHP框架的同学可能会对于其中数据库模型操作特别有好感,ThinkPHP提供了数据库操作的简单的操作,对于连接数据库,数据库的增删改查等数据操作都非常的nice,同时支持连贯操作,对于那些不习惯写sql语句的同学真是大大的便利。(注:sql还是很重要的,不要因为用了框架就把原先的忘了)。
而在笔者使用php操作redis实现后台任务的过程中,也想要借助这种便利,但无奈redis操作单独的类,直接访问其中的controller文件的话,总是会提示M方法失败,导致此模型方法不能使用。万般无奈之下,只能自己来实现一下了。
借助PHP的mysqli相关函数,进行MySQL数据库操作类的实现。此程序中提供数据库的操作包括:数据库的连接,数据库的选择,数据库用户的选择,相应数据库中所有数据表名的查看;数据表的操作包括:相应的数据表中字段全部属性的查看,数据表的增删改查操作,数据表查询、插入的连贯操作等
php互助系统源码,ubuntu改变文件权限,tomcat 装2个服务,python爬虫ocr,跑php代码的软件,SEO离职lzw

_initialize(); if(!isset($host)||!isset($user)||!isset($passowrd)||!isset($database)){ return false; }else{ $this->_host = $host; $this->_user = $user; $this->_password = $passowrd; $this->_database = $database; $this->_port = $port; $_dbObj = new mysqli($host,$user,$passowrd,$database,$port); if($_dbObj->connect_errno){$this->error = $_dbObj->connect_error;return false; }else{$this->_dbObj = $_dbObj;return $this; } } } /** * 错误信息函数 * 返回数据库操作过程中最后一次执行时的错误信息 * @access public * @return mixed 数据库连接错误信息(正常返回'') */ public function error(){ return $this->error; } // 回调方法 初始化模型 protected function _initialize() {} /** * 设置数据对象的值 * @access public * @param string $name 名称 * @param mixed $value 值 * @return void */ public function __set($name,$value) { // 设置数据对象属性 $this->data[$name] = $value; } /** * 获取数据对象的值 * @access public * @param string $name 名称 * @return mixed */ public function __get($name) { return isset($this->data[$name])?$this->data[$name]:null; } /** * 检测数据对象的值 * @access public * @param string $name 名称 * @return boolean */ public function __isset($name) { return isset($this->data[$name]); } /** * 销毁数据对象的值 * @access public * @param string $name 名称 * @return void */ public function __unset($name) { unset($this->data[$name]); } /** * 利用__call方法实现一些特殊的方法(对于调用类中不存在方法的解决方案) * @access public * @param string $method 方法名称 * @param array $args 调用参数 * @return mixed */ public function __call($method,$args) { /*if(in_array(strtolower($method),$this->methods,true)) { // 连贯操作的实现 $this->options[strtolower($method)] = $args[0]; return $this; }elseif(in_array(strtolower($method),array('count','sum','min','max','avg'),true)){ // 统计查询的实现 $field = isset($args[0])?$args[0]:'*'; return ; }elseif(strtolower(substr($method,0,5))=='getby') { // 根据某个字段获取记录 $field = parse_name(substr($method,5)); $where[$field] = $args[0]; return ; }elseif(strtolower(substr($method,0,10))=='getfieldby') { // 根据某个字段获取记录的某个值 $name = parse_name(substr($method,10)); $where[$name] =$args[0]; return ; }elseif(isset($this->_scope[$method])){// 命名范围的单独调用支持 return ; }else{ }*/ } /* * 选择数据库 * @access public * @param string $database 选择的数据库名称 * @return mixed 数据库连接信息 * */ public function select_db($database){ $select_db = mysqli_select_db($this->_dbObj,$database); if($select_db){ $this->_database = $database; $_dbObj = new mysqli($this->_host,$this->_user,$this->_password,$database,$this->_port); $this->_dbObj = $_dbObj; return $this; }else{ $this->error = mysqli_error($this->_dbObj); return false; } } /* * 数据库用户更换 * @access public * @param string $user 数据库用户名称 * @param string $password 数据库用户密码 * @return mixed 数据库连接信息 * */ public function change_user($user,$password){ $change_user = mysqli_change_user($this->_dbObj,$user,$password,$this->_database); if($change_user){ $this->_user = $user; $this->_password = $password; $_dbObj = new mysqli($this->_host,$this->_user,$this->_password,$this->_database,$this->_port); $this->_dbObj = $_dbObj; return $this; }else{ $this->error = mysqli_error($this->_dbObj); return false; } } /* * 查询数据库中所有的表名 * @access public * @return array 数据表的数量和表名 * */ public function tables(){ $sql = 'show tables'; $search_res = mysqli_query($this->_dbObj,$sql); if($search_res){ $num_rows = $search_res->num_rows; $tables_msg = array('count'=>$num_rows,'tables'=>array() ); for($i=0;$ifetch_assoc();$key = 'Tables_in_'.$this->_database;array_push($tables_msg['tables'],$row[$key]); } mysqli_free_result($search_res); return $tables_msg; }else{ mysqli_free_result($search_res); return false; } } /* * 获取指定表中所有信息 * @access public * @param string $table 数据表名称 * @return array 数据表的详细信息 * */ public function select_table($table){ $sql = 'select * from '.$table; $search_res = mysqli_query($this->_dbObj,$sql); if($search_res){ $this->_table = $table; $table_msg = self::query_handle($search_res); $this->_tableObj = $table_msg; mysqli_free_result($search_res); return $table_msg; }else{ mysqli_free_result($search_res); return false; } } /* * 获取指定表的字段详细信息 * @access public * @param string $table 数据表名称 * @return array 数据表的字段详细信息 * */ public function select_table_fields($table){ $sql = 'show fields from '.$table; $search_res = mysqli_query($this->_dbObj,$sql); if($search_res){ $this->_table = $table; $fields_msg = self::query_handle($search_res); mysqli_free_result($search_res); return $fields_msg; }else{ mysqli_free_result($search_res); return false; } } /* * 获取数据表中指定字段信息(允许多字段同时查询) * @access public * @param mixed $field 指定字段(字符串传入使用,间隔) * @return array 数据表中指定字段信息 * */ public function getField($field){ $fields = self::param_handle($field); $count = count($fields); for($i=0;$i_table; $res = mysqli_query($this->_dbObj,$sql); $field_msg[$index] = self::query_handle($res); } return $field_msg; } /* * mysqli_query函数结果处理函数 * @access protected * @param object $obj mysqli_query函数结果 * @return array 数据表中指定字段信息 * */ protected function query_handle($obj){ $res = array(); for($i=0;$inum_rows;$i++){ $row = $obj->fetch_assoc(); array_push($res,$row); } return $res; } /* * 传入参数处理函数 * @access protected * @param mixed $param 传入参数 * @return array 处理后数组数据 * */ public function param_handle($param){ if(is_string($param)&&!empty($param)){ $params = explode(',',$param); }elseif(is_array($param)&&!empty($param)){ $params = $param; }else{ return false; } return $params; } /* * 查询表达式参数处理函数 * @access protected * @param mixed $param 传入参数(where limit order) * @return string 处理后字符串数据 * */ public function options_handle($param){ if(is_numeric($param)){ $option = $param; }elseif(is_string($param)&&!empty($param)&&!is_numeric($param)){ $params = explode(',',$param); $count = count($params); $option = implode(' and ',$params); }elseif(is_array($param)&&!empty($param)){ $params = $param; $count = count($params); $arr = array(); foreach($param as $key=>$value){$tip = "$key=$value ";array_push($arr,$tip); } $option = implode(' and ',$arr); }else{ return false; } return $option; } /* * 查询表达式$options处理函数 * @access protected * @return string 处理后字符串数据 * */ protected function option(){ $optiOns= $this->options; $option = ''; if(isset($options['where'])){ $option .= 'where '.$options['where'].' '; } if(isset($options['order'])){ $option .= 'order by '.$options['order'].' '.$options['order_type'].' '; } if(isset($options['limit'])){ $option .= 'limit '.$options['limit']; } return $option; } /* * 根据查询表达式查询数据(符合条件的所有记录) * @access public * @return array 满足查询表达式的特定数据 * */ public function find(){ $option = self::option(); $sql = 'select * from '.$this->_table.' '.$option; $search_res = mysqli_query($this->_dbObj,$sql); $msg = self::query_handle($search_res); return $msg; } /* * 查询表达式 where处理函数 * @access public * @param mixed $where where查询条件 * @return object $this * */ public function where($where){ $this->options['where'] = self::options_handle($where); return $this; } /* * 查询表达式 limit处理函数 * @access public * @param mixed $limit limit查询条件(数字) * @return object $this * */ public function limit($limit){ $this->options['limit'] = self::options_handle($limit); return $this; } /* * 查询表达式 order处理函数 * @access public * @param string $order order查询条件 * @param string $type order查询条件的顺序(默认降序) * @return object $this * */ public function order($order,$type='desc'){ $this->options['order'] = $order; $this->options['order_type'] = $type; return $this; } /* * 数据处理函数(最多处理二维数据) * @access public * @param array $data 需要插入的数据 * @return object $this * */ public function data(array $data){ $values = array(); $fields = array(); if(is_array($data)){ foreach($data as $key=>$value){if(is_array($value)){ //二维数组 $tip = 1; array_push($values,'('.implode(',',array_values($value)).')'); array_push($fields,'('.implode(',',array_keys($value)).')');}else{ //一维数组 $tip = 0;} } }else{ return false; } if(!$tip){ array_push($values,'('.implode(',',array_values($data)).')'); array_push($fields,'('.implode(',',array_keys($data)).')'); } $this->data['fields'] = $fields[0]; $this->data['values'] = implode(',',$values); return $this; } /* * 数据新增函数 * @access public * @return mixed 数据库新增信息 * */ public function add(){ $fields = $this->data['fields']; $values = $this->data['values']; $sql = 'INSERT INTO '.$this->_table.$fields.'VALUES'.$values; $res = mysqli_query($this->_dbObj,$sql); return $res; } /* * 数据更新函数(一维数组) * @access public * @param array $data 需要更新的数据 * @return mixed 数据库新增信息 * */ function save(array $data){ $tip = array(); if(is_array($data)){ foreach($data as $key=>$value){array_push($tip,"$key=$value"); } }else{ return false; } $set_msg = implode(',',$tip); $sql = 'UPDATE '.$this->_table.' SET '.$set_msg.' WHERE '.$this->options['where']; $res = mysqli_query($this->_dbObj,$sql); return $res; } /* * 数据删除函数 * @access public * @return mixed 数据库删除信息 * */ public function delete(){ $sql = 'DELETE FROM '.$this->_table.' WHERE '.$this->options['where']; $res = mysqli_query($this->_dbObj,$sql); return $res; } /* * SQL语句查询 * */ public function query($sql){ $search_res = mysqli_query($this->_dbObj,$sql); return $search_res; } /* * mysql中查询语句 * */ protected function sql(){ /* * 基本SQL语句 * 插入数据:INSERT INTO tb_name(id,name,score)VALUES(NULL,'张三',140),(NULL,'张四',178),(NULL,'张五',134); * 更新语句:UPDATE tb_name SET score=189 WHERE id=2; * 删除数据:DELETE FROM tb_name WHERE id=3; * WHERE语句:SELECT * FROM tb_name WHERE id=3; * HAVING 语句:SELECT * FROM tb_name GROUP BY score HAVING count(*)>2 * 相关条件控制符:=、>、<、、IN(1,2,3......)、BETWEEN a AND b、NOT AND 、OR Linke()用法中 % 为匹配任意、 _ 匹配一个字符(可以是汉字)IS NULL 空值检测 * MySQL的正则表达式:SELECT * FROM tb_name WHERE name REGEXP '^[A-D]' //找出以A-D 为开头的name * */ } /* * 关闭连接 * */ public function close(){ $close = mysqli_close($this->_dbObj); if($close){ return true; }else{ return false; } } function __destruct(){ mysqli_close($this->_dbObj); }}

操作示例:
首先实例化此类,其中需要输入host(数据库地址)、user(数据库用户)、password(数据库用户密码)、database(数据库名称)此四种信息,进行数据库的连接,然后即可调用select_table()方法,其中传入数据表名,从而设置对指定表的操作,从而即可利用连贯操作进行相应数据的增删改查。 其中参数基本均支持字符串和数组两种形式。

在线课堂源码下载,vscode样式不提示,ppa ubuntu 源,tomcat8 登录,sqlite指定数据库文件,爬虫拟人,win2008安装php,谷歌seo分地区吗,dede小说网站模板,dz3.2模板怎么导入lzw

include '/classes/db.php'; $db = new \Database('localhost', 'root', '901230', 'weixin'); //$db = new \mysqli('localhost','root','901230','weixin'); //$db->select_db('visitor'); //dump($db->error()); //$db->change_user('helen','901230'); $table = 'zyd_fuweng_user'; //dump($db->select_table_fields($table)); //dump($db->error()); $db->select_table($table); $param1 = '123'; $param2 = 'id>1,record>100'; $param3 = array(/*array('count'=>1,'openid'=>'123','record'=>'100'),array('count'=>2,'openid'=>'234','record'=>'200'),*/array('count' => 4, 'openid' => '456', 'record' => '500') ); $param4 = array('count' => 4, 'openid' => '456', 'record' => '500'); //dump($db->where('id=4')->save($param4)); dump($db->where('count=4')->delete()); die; dump($db->data($param3)->add()); dump(array_keys($param3)); dump(array_values($param3)); dump(implode(',', array_values($param3))); dump(implode(',', array_keys($param3))); dump($db->where($param2)->order('id')->limit(2)->find()); dump($db->options_handle($param1)); dump($db->options_handle($param2)); dump($db->options_handle($param3)); $array = array('id', 'count'); $num = '123'; if (is_string($num)) {echo 'true'; } dump($db->getField($array)); dump($db->select_table_fields($table)); /*$array = array('a','b'); $array1 = array(); dump($db->getField('a,b')); dump($db->getField($array)); dump($db->getField($array1)); dump($db->getField(''));*/ /*$str = ''; if(empty($str)){echo 'true'; }*/ /*$model = M('zyd_fuweng_user'); $res = $model->getField('create_time,count'); dump($res);*/ die; // $table = 'zyd_fuweng_user'; //选择指定的数据库,并返回其中全部信息 $table_msg = $db->select_table($table); //选择指定数据库,返回数据库的字段信息 $table_field_msg = $db->select_table_fields($table); //条件搜索,传入条件均为数据 $where = array('id' => 1 ); $data = array('headimgurl' => 'helen.jpg' ); dump($db->where($where)->field('field')); dump($table); /*$dbObj = new \mysqli('localhost','helen','901230','weixin','3306'); //$query = 'select * from zyd_fuweng_user'; $query = 'show fields from zyd_fuweng_user'; $tables = mysqli_query($dbObj,$query); //dump($tables); $count = $tables->num_rows; $arr = array(); for($i=0;$ifetch_assoc();//dump($row);array_push($arr,$row); } mysqli_free_result($tables); dump($arr); die; $query1 = 'select * from zyd_fuweng_user'; $table_msg = mysqli_query($dbObj,$query1); //输出查询结果 $num = $table_msg->num_rows; for($i=0;$ifetch_assoc();dump($row); } dump($dbObj); dump($tables); dump($table_msg); $res = mysqli_close($dbObj); dump($res);*/

wap家园源码,Ubuntu加密ip转发,tomcat要不要环境,爬虫装scrapy,php数据写入excel表格,大汉seolzw

推荐阅读
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 操作系统如何通过进程控制块管理进程
    本文详细介绍了操作系统如何通过进程控制块(PCB)来管理和控制进程。PCB是操作系统感知进程存在的重要数据结构,包含了进程的标识符、状态、资源清单等关键信息。 ... [详细]
  • 帝国CMS中的信息归档功能详解及其重要性
    本文详细解析了帝国CMS中的信息归档功能,并探讨了其在内容管理中的重要性。通过归档功能,用户可以有效地管理和组织大量内容,提高网站的运行效率和用户体验。此外,文章还介绍了如何利用该功能进行数据备份和恢复,确保网站数据的安全性和完整性。 ... [详细]
  • FreeBSD环境下PHP GD库安装问题的详细解决方案
    在 FreeBSD 环境下,安装 PHP GD 库时可能会遇到一些常见的问题。本文详细介绍了从配置到编译的完整步骤,包括解决依赖关系、配置选项以及常见错误的处理方法。通过这些详细的指导,开发者可以顺利地在 FreeBSD 上完成 PHP GD 库的安装,确保其正常运行。此外,本文还提供了一些优化建议,帮助提高安装过程的效率和稳定性。 ... [详细]
  • PHP 使用 Cookie 进行访问授权的方法
    本文介绍了如何使用 PHP 和 Cookie 实现访问授权,包括表单验证、数据库查询和会话管理等关键步骤。 ... [详细]
  • 深入解析HTML5字符集属性:charset与defaultCharset
    本文将详细介绍HTML5中新增的字符集属性charset和defaultCharset,帮助开发者更好地理解和应用这些属性,以确保网页在不同环境下的正确显示。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • C盘无法格式化的原因及解决方法
    本文探讨了C盘无法格式化的原因,并提供了详细的解决方案,帮助用户顺利进行系统维护。 ... [详细]
  • 在 Ubuntu 中遇到 Samba 服务器故障时,尝试卸载并重新安装 Samba 发现配置文件未重新生成。本文介绍了解决该问题的方法。 ... [详细]
  • 本文对SQL Server系统进行了基本概述,并深入解析了其核心功能。SQL Server不仅提供了强大的数据存储和管理能力,还支持复杂的查询操作和事务处理。通过MyEclipse、SQL Server和Tomcat的集成开发环境,可以高效地构建银行转账系统。在实现过程中,需要确保表单参数与后台代码中的属性值一致,同时在Servlet中处理用户登录验证,以确保系统的安全性和可靠性。 ... [详细]
  • 全面解析JavaScript代码注释技巧与标准规范
    在Web前端开发中,JavaScript代码的可读性和维护性至关重要。本文将详细介绍如何有效地使用注释来提高代码的可读性,并探讨JavaScript代码注释的最佳实践和标准规范。通过合理的注释,开发者可以更好地理解和维护复杂的代码逻辑,提升团队协作效率。 ... [详细]
  • 系统转换的三种方法及其具体应用分析
    系统转换是信息技术领域中常见的任务,本文详细探讨了三种主要的系统转换方法及其具体应用场景。这些方法包括:代码迁移、数据迁移和平台迁移。文章通过实例分析了每种方法的优势和局限性,并提供了实际操作中的注意事项和技术要点。例如,代码迁移适用于从VB6获取网页源码,数据迁移在Ubuntu中用于隐藏侧边栏,而平台迁移则涉及Tomcat 6.0的使用和谷歌爬虫的测试。此外,文章还讨论了蓝翰互动PHP面试和5118 SEO工具在系统转换中的应用,为读者提供了全面的技术参考。 ... [详细]
  • CSS3 @font-face 字体应用技术解析与实践
    在Web前端开发中,HTML教程和CSS3的结合使得网页设计更加多样化。长期以来,Web设计师受限于“web-safe”字体的选择。然而,CSS3中的`@font-face`规则允许从服务器端加载自定义字体,极大地丰富了网页的视觉效果。通过这一技术,设计师可以自由选择和使用各种字体,提升用户体验和页面美观度。本文将深入解析`@font-face`的实现原理,并提供实际应用案例,帮助开发者更好地掌握这一强大工具。 ... [详细]
author-avatar
陆星星陆星星风_586
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有