0

0

php数据库操作类(实现表增删改查、取行数、查询多条数据等)

php中文网

php中文网

发布时间:2016-07-25 09:00:31

|

1413人浏览过

|

来源于php中文网

原创

php数据库操作类,实现表的增删改查,获取行数,查询多条数据记录,左连接查询,创建数据表结构等。功能丰富,方便移值,有需要的朋友,可以参考下。

php数据库类完整代码与示例如下。

1、代码

links = mysql_connect(DB_HOST, DB_USER, DB_PWD);
if(DEBUG){
mysql_select_db(DB_NAME) or die('ERROR:'.mysql_error());
}
else{
mysql_select_db(DB_NAME);
}
$char_sql = "SET NAMES '" . CHARSET . "'";
$this->query($char_sql);
}

/**
* ****************** 操作 ******************
*/
/**
* 增删改查操作方法
* 输入sql语句
* 返回布尔值或结果集$row
*/
function query($sql) {
if(DEBUG){
$render = mysql_query($sql) or die('query ERROR:'.mysql_error()."
sql语句出错:" . $sql); return $render; } else{ return mysql_query($sql); } } /** * 计算行数方法 * 输入 * 结果数组 */ function count($table,$condition='1') { $sql = "select count(*) from `".DB_PREFIX.$table."` where $condition"; $result = $this->select($sql); return $result[0]['count(*)']; } /** * 原始的sql语句查操作方法 * 输入sql语句 * 结果数组 */ function select($sql) { $row = $this->query($sql); $results = array(); while($arr = $this->fetch($row)){ $results[] = $arr; } //$this->free_result($row); return $results; } /** * 检查某字段是否存在某值 * @param 输入表名.字段,值 * @return id 或者 false **/ function check_exists($table,$val){ $render = false; $tab = explode('.',$table); if($tab['1'] && $tab['1']!='id'){ $fields = $tab['1']; $table = "{$tab[0]}.id,{$fields}"; } else{ $fields = 'id'; $table = $tab[0].".id"; } $condition = "`$fields` = '{$val}'"; $detail = $this->read($table,$condition); if($detail[$fields]){ $render = $detail['id']; } return $render; } /** * 查询多条数据方法 * 输入表名.字段,字段;查询条件,条数 * 如果条件是数组,则进入高级搜索模式 * 返回结果数组 */ function readall($table,$condition='1',$limit='') { $tab = explode('.',$table); $table = $tab['0']; if($tab['1']){ $fields = $tab['1']; $fields_array =explode(',',$fields); $fields = ''; foreach( $fields_array as $one){ $fields .= "`$one`,"; } $fields = rtrim($fields,','); } else{ $fields = '*'; } if(is_array($condition)){ $condition = $this->parse_condition($condition); } $sql = "select $fields from `".DB_PREFIX.$table."` where $condition"; if($limit)$sql .= " limit $limit"; return $this->select($sql); } /** * 查询单条数据方法 * 输入表名.字段,字段;查询条件 * 返回结果数组 */ function read($table,$condition='1') { $render = $this ->readall($table,$condition,1); return $render[0]; } /** * 修改数据方法 * 输入表名,插入数据array('字段'=>'值'),条件 * 返回布尔值 */ function update($table,$data,$condition ) { $set = ''; foreach( $data as $key=>$val){ $set .= "`$key` = '".$val."',"; } $set = rtrim($set,','); if(is_array($condition)){ $condition = $this->parse_condition($condition); } $sql = "update `".DB_PREFIX.$table."` set $set where $condition"; return $this->query($sql); } /** * 插入数据方法 * 输入表名,数据array('字段'=>'值') * 返回布尔 */ function insert($table,$data) { $fields = array(); $values = array(); foreach( $data as $key=> $val){ if(is_array($val)){ $_values = array(); $_fields = array(); foreach( $val as $k=> $v){ $_fields[]= "`$k`"; $_values[]= "'{$v}'"; } $fields = $_fields; $values[] = '('.implode(',',$_values).')'; } else{ $fields[] = "`$key`"; $values[] = "'{$val}'"; } } $fields = implode(',',$fields); $values = implode(',',$values); $sql = "insert into `".DB_PREFIX.$table."` ($fields) values($values)"; return $this->query($sql); } /** * 删除数据方法 * 输入表名,条件 * 返回bool */ function delete($table,$condition) { if(empty($condition)){ die('条件不能为空'); } if(is_array($condition)){ $condition = $this->parse_condition($condition); } $sql = "delete from `".DB_PREFIX.$table."` where $condition"; return $this->query($sql); } /** * 解析条件的函数 * @param 条件数组 * $arr[] = "`id`==0"; $arr[] = "`id`==5"; $arr['id'] = "5"; $arr['or'][] = "`id`!=2"; $arr['or'][] = "`id`!=1"; $arr['or'][] = "`id`!=2"; $arr['groups'][]='id'; $arr['orders']['id']='asc'; $arr['orders']['td']='DESC'; * * @return str **/ function parse_condition($condition){ $and = '1'; $or = '0'; $groups = array(); $orders = array(); foreach( $condition as $key=>$val){ if(is_numeric($key)){ $and .= " and $val"; } elseif(strtolower($key)== 'or'){ //处理or条件 if(is_array($val)){ foreach( $val as $k=>$v){ if(is_numeric($k)){ $or .= " or {$v}"; } elseif(is_array($v)){ $v = implode(',',$v); $or .= " or `$k` in ($v)"; }else{ $or .= " or `$k='{$v}'"; } } }else{ $or .= " or $val'"; } } elseif(strtolower($key)== 'groups'){ //处理group by foreach( $val as $k=>$v){ $groups[] = $v; } }elseif(strtolower($key)== 'orders'){ //处理order by foreach( $val as $k=>$v){ $orders[] = $k.' '.$v; } }else{ if(is_array($val)){ $val = implode(',',$val); $and .= " and `$key` in ($val)"; }else{ $and .= " and `$key`='{$val}'"; } } } if($and!='1' && $or!='0')$where = $and.' or '.$or; elseif($and!='1') $where = $and; elseif($or!='0') $where = $or; if($groups)$where .= " group by ".implode(',',$groups); if($orders)$where .= " order by ".implode(',',$orders); $where = str_replace('1 and','',str_replace('0 or','',$where)); return $where; } /** * 锁表方法 * 输入表名,锁定类型,r or w 写锁要放在读锁前面 * 返回bool */ function lock($table,$type='r') { if($type=='r'){ $type = 'READ'; } else{ $type = 'WRITE'; } $sql = "lock table `".DB_PREFIX.$table."` $type"; return $this->query($sql); } /** * 解锁表方法 * * 返回bool */ function unlock( ) { $sql = "unlock tables"; return $this->query($sql); } /** * 结果集放入数组方法 * 返回数组,指针下移 */ function fetch($row) { return mysql_fetch_array($row,MYSQL_ASSOC); } /** * 计算结果集行数方法 * 输入$row * 返回行数 */ function num_rows($row) { return mysql_num_rows($row); } /** * 计算结果集列数方法 * 输入$row * 返回列数 */ function num_fields($row) { return mysql_num_fields($row); } /** * 释放result结果集内存 * 返回布尔值 */ function free_result($row) { return mysql_free_result($row); } /** * 查看指定表的字段名 * 输入表名 * 返回全部字段名数组 */ function list_fields($table) { $fields = mysql_list_fields(DB_NAME, DB_PREFIX.$table, $this->links); $columns = mysql_num_fields($fields); for ($i = 0; $i < $columns; $i++) { $row[$i] = mysql_field_name($fields, $i); } return $row; } /** * 查看数据库版本方法 */ function version() { return mysql_get_server_info(); } /** * 插入时查看插入ID */ function insert_id() { return mysql_insert_id(); } /** * 分页方法 */ function page($table,$condition='1',$pagesize=20,$id='page') { $page = $_GET[$id]; if(!$page)$page= 0 ; elseif(!is_numeric($page))die('分页出错'); //查找结果集 $p = $page * $pagesize; $limit = $p.",".$pagesize; $results = $this->readall($table,$condition,$limit); //取得结果集行数 $num = $this->count($table,$condition); //定义最后页 $maxpage if ($num % $pagesize) { $maxpage = (int) ($num / $pagesize +1); } else $maxpage = $num / $pagesize; if(STATICS){ //从服务器端取得url信息 if($_GET[$id] === null){ $_SERVER["REQUEST_URI"] = str_replace('index.php','',$_SERVER["REQUEST_URI"]); $_SESSION[$id] = str_replace('.html','',$_SERVER["REQUEST_URI"],$count); $_SESSION[$id] = $count?$_SESSION[$id] :$_SESSION[$id].'index'; if(!sizeof($_GET))$_SESSION[$id].="-htm"; } $str = "
First "; if($page)$str .= "Previous "; if($page-3>=0)$str .="".($page-2)." "; if($page-2>=0)$str .="".($page-1)." "; if($page-1>=0)$str .="".$page." "; if($page < $maxpage)$str .=($page+1)." "; if($page+1 < $maxpage)$str .="".($page+2)." "; if($page+2 < $maxpage)$str .="".($page+3)." "; if($page+3 < $maxpage)$str .="".($page+4)." "; if($page+1 < $maxpage)$str .="Next "; if(!$maxpage)$maxpage=1; $str .="Last ".($page+1)."/".$maxpage."Total
"; } else{ //从服务器端取得url信息 if($_GET[$id] === null){ $_SESSION[$id] = $_SERVER["REQUEST_URI"]; if(!sizeof($_GET))$_SESSION[$id].="?p=1"; } $str = "
First "; if($page)$str .= "Previous "; if($page-3>=0)$str .="".($page-2)." "; if($page-2>=0)$str .="".($page-1)." "; if($page-1>=0)$str .="".$page." "; if($page < $maxpage)$str .=($page+1)." "; if($page+1 < $maxpage)$str .="".($page+2)." "; if($page+2 < $maxpage)$str .="".($page+3)." "; if($page+3 < $maxpage)$str .="".($page+4)." "; if($page+1 < $maxpage)$str .="Next "; if(!$maxpage)$maxpage=1; $str .="Last ".($page+1)."/".$maxpage."Total
"; } return array($results,$str); } /** * 左连接多表查询 * @param * @return **/ function leftjoin($left,$right,$on,$condition,$limit=1){ $left = explode('.',$left); $right = explode('.',$right); $left['0'] = "`".DB_PREFIX.$left['0']."`"; $right['0'] = "`".DB_PREFIX.$right['0']."`"; if($left['1'] || $right['1']){ $fields = ''; if(!empty($left['1'])){ $_field = explode(',',$left['1']); foreach( $_field as $one){ $fields.=$left['0'].'.`'.$one."`,"; } } if(!empty($right['1'])){ $_field = explode(',',$right['1']); foreach( $_field as $one){ $fields.=$right['0'].".`".$one."`,"; } } $fields = rtrim($fields,','); } else{ $fields = '*'; } $on = str_replace('\2',$right[0],str_replace('\1',$left[0],$on)); $condition = str_replace('\2',$right[0],str_replace('\1',$left[0],$condition)); $sql = "SELECT {$fields} FROM {$left[0]} LEFT JOIN {$right[0]} ON ( {$on} ) WHERE ( {$condition} ) LIMIT {$limit} "; $query = $this->query($sql); $field_num = mysql_num_fields($query); while($arr = mysql_fetch_array($query,MYSQL_NUM)){ $_arr = array(); for( $i=0 ; $i<$field_num ; $i++ ){ $table = str_replace(DB_PREFIX,'',mysql_field_table($query, $i)); $field = mysql_field_name($query, $i); $_arr[$table.'.'.$field] = $arr[$i]; } $array[]=$_arr; } $array=$limit==1?$arrat[0]:$array; return $array; } /** * 用于创建一个表结构 * @param 表名,结构 array(字段,格式,注释) 表注释 索引array(字段,字段) 全文搜索(字段,字段) * @return 打印 **/ function createTable($tablename,$data,$comment='',$key='',$fulltext=''){ $_key=''; $_type = ''; $_fulltext = ''; $tablename = DB_PREFIX.$tablename; $sql = "CREATE TABLE IF NOT EXISTS `$tablename` ( `id` int(10) unsigned NOT NULL auto_increment COMMENT 'ID', "; foreach( $data as $one){ switch($one[1]){ case '': $_type = 'varchar(255)'; break; case 'tinyint': $_type = 'tinyint(1)'; break; case 'time': $_type = 'int(10)'; break; default: if(strpos($one[1],'.')!==false){ $_type = explode('.',$one[1]); $_type = $_type[0].'('.$_type[1].')'; } else{ $_type = $one[1]; } break; } $sql.="`{$one[0]}` $_type NOT NULL COMMENT '{$one[2]}', "; } if(!empty($key)){ foreach( $key as $one){ $_key.="KEY `$one` (`$one`), "; } } if(!empty($fulltext)){ foreach( $fulltext as $one){ $_key.="FULLTEXT `$one` (`$one`), "; } } $sql.= $_key.$_fulltext."PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=".CHARSET." COMMENT '$comment'; "; if(!$_GET[sure]){ if(empty($_GET)){ $url = '?sure=1'; } else{ $url = $_SERVER["REQUEST_URI"].'&sure=1'; } echo "即将执行以下建表操作:
$sql确定
"; } elseif($_GET[sure] && $this->query($sql)){ echo "完成操作"; } else{ echo "操作失败:
>
$sql
"; } exit; } }; ?>

调用示例:

尘月网络企业网站管理系统2010
尘月网络企业网站管理系统2010

本版升级功能:1、增加“系统参数设置”功能,可在线管理编辑全站数据库路径、备份路径,无须到程序代码下更改;2、改进后台管理员权限分配问题,严谨、完善、安全的根限分配细分到每个功能页面的列表查看权限、添加权限、编辑权限、删除权限都可以在线分配,确保系统在多用户管理下,安全稳定运行;3、更新优化数据库操作,在线备份、压缩、恢复数据库,管理登录日志;4、增加&am

下载
createTable('article',$data,'文章表');
//增删改查
$data['title']='t';
$data['keyword']='k';
$Db->insert('article',$data);
$num = $Db->read('article.id','1 order by id desc');
$data['created'] = mktime()+$num['id'];
$Db->update('article',$data,"`id` =2");
$Db->delete('article',"`id` =3");
?>


相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
苹果官网入口直接访问
苹果官网入口直接访问

苹果官网直接访问入口是https://www.apple.com/cn/,该页面具备0.8秒首屏渲染、HTTP/3与Brotli加速、WebP+AVIF双格式图片、免登录浏览全参数等特性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

115

2025.12.24

拼豆图纸在线生成器
拼豆图纸在线生成器

拼豆图纸生成器有PixelBeads在线版、BeadGen和“豆图快转”;推荐通过pixelbeads.online或搜索“beadgen free online”直达官网,避开需注册的诱导页面。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

82

2025.12.24

俄罗斯搜索引擎yandex官方入口地址(最新版)
俄罗斯搜索引擎yandex官方入口地址(最新版)

Yandex官方入口网址是https://yandex.com。用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

546

2025.12.24

JavaScript ES6新特性
JavaScript ES6新特性

ES6是JavaScript的根本性升级,引入let/const实现块级作用域、箭头函数解决this绑定问题、解构赋值与模板字符串简化数据处理、对象简写与模块化提升代码可读性与组织性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

150

2025.12.24

php框架基础知识汇总
php框架基础知识汇总

php框架是构建web应用程序的架构,提供工具和功能,以简化开发过程。选择合适的框架取决于项目需求和技能水平。实战案例展示了使用laravel构建博客的步骤,包括安装、创建模型、定义路由、编写控制器和呈现视图。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

20

2025.12.24

Word 字间距调整方法汇总
Word 字间距调整方法汇总

本专题整合了Word字间距调整方法,阅读下面的文章了解更详细操作。

47

2025.12.24

任务管理器教程
任务管理器教程

本专题整合了任务管理器相关教程,阅读下面的文章了解更多详细操作。

7

2025.12.24

AppleID格式
AppleID格式

本专题整合了AppleID相关内容,阅读专题下面的文章了解更多详细教程。

12

2025.12.24

csgo视频观看入口合集
csgo视频观看入口合集

本专题整合了csgo观看入口合集,阅读下面的文章了知道更多入口地址。

371

2025.12.24

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.6万人学习

【李炎恢】ThinkPHP8.x 后端框架课程
【李炎恢】ThinkPHP8.x 后端框架课程

共50课时 | 4.3万人学习

Swoft2.x速学之http api篇课程
Swoft2.x速学之http api篇课程

共16课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号