php mysql数据库操作类(实例讲解)

发布时间 - 2026-01-11 02:40:03    点击率:

接着稍微说说整体的思路。整个类的封装,包含一个连接数据库的私有属性$conn和若干操作函数。$conn在对象实例化的时候,由构造函数处理传入的参数后返回一个资源型的连接句柄。而后即可通过调用该实例化的对象的相应方法对数据库进行增删查改的操作。

talk less and show code:

<?php
/** 
*以下代码用于数据库操作类的封装
* 
* @author rex<rex.sp.li@aliyun.com> 
* @version 1.0
* @since 2015
*/


class Mysql{

//数据库连接返回值
private $conn;

/**
* [构造函数,返回值给$conn]
* @param [string] $hostname [主机名]
* @param [string] $username[用户名]
* @param [string] $password[密码]
* @param [string] $dbname[数据库名]
* @param [string] $charset[字符集]
* @return [null]

*/

function __construct($hostname,$username,$password,$dbname,$charset='utf8'){
  $conn = @mysql_connect($hostname,$username,$password);
  if(!$conn){
    echo '连接失败,请联系管理员';
    exit;
  }
  $this->conn = $conn;
  $res = mysql_select_db($dbname);
  if(!$res){
  echo '连接失败,请联系管理员';
  exit;
  }
  mysql_set_charset($charset);
}
function __destruct(){
  mysql_close();
}
/**
* [getAll 获取所有信息]
* @param [string] $sql [sql语句]
* @return [array] [返回二维数组]
*/
function getAll($sql){
  $result = mysql_query($sql,$this->conn);
  $data = array();
  if($result && mysql_num_rows($result)>0){
    while($row = mysql_fetch_assoc($result)){
    $data[] = $row;
    }
  }
  return $data;
}
/**
* [getOne 获取单条数据]
* @param [string] $sql [sql语句]
* @return [array] [返回一维数组]
*/
function getOne($sql){
  $result = mysql_query($sql,$this->conn);
  $data = array();
  if($result && mysql_num_rows($result)>0){
    $data = mysql_fetch_assoc($result);
  }
  return $data;
}

/**
* [getOne 获取单条数据]
* @param [string] $table [表名]
* @param [string] $data [由字段名当键,属性当键值的一维数组]
* @return [type] [返回false或者插入数据的id]
*/

function insert($table,$data){
  $str = '';
  $str .="INSERT INTO `$table` ";
  $str .="(`".implode("`,`",array_keys($data))."`) "; 
  $str .=" VALUES ";
  $str .= "('".implode("','",$data)."')";
  $res = mysql_query($str,$this->conn);
  if($res && mysql_affected_rows()>0){
      return mysql_insert_id();
  }else{
    return false;
  }
}
/**
* [update 更新数据库]
* @param [string] $table [表名]
* @param [array] $data [更新的数据,由字段名当键,属性当键值的一维数组]
* @param [string] $where [条件,‘字段名'=‘字段属性']
* @return [type] [更新成功返回影响的行数,更新失败返回false]
*/
function update($table,$data,$where){
  $sql = 'UPDATE '.$table.' SET ';
  foreach($data as $key => $value){
  $sql .= "`{$key}`='{$value}',";
  }
  $sql = rtrim($sql,',');
  $sql .= " WHERE $where";
  $res = mysql_query($sql,$this->conn);
  if($res && mysql_affected_rows()){
    return mysql_affected_rows();
  }else{
  return false;
  }
}

/**
* [delete 删除数据]
* @param [string] $table [表名]
* @param [string] $where [条件,‘字段名'=‘字段属性']
* @return [type] [成功返回影响的行数,失败返回false]
*/
function del($table,$where){
  $sql = "DELETE FROM `{$table}` WHERE {$where}";
  $res = mysql_query($sql,$this->conn);
  if($res && mysql_affected_rows()){
    return mysql_affected_rows();
  }else{
  return false;
  }
}
}

实例化类:

<?php

//包含数据库操作类文件
include 'mysql.class.php';

//设置传入参数
$hostname='localhost';
$username='root';
$password='123456';
$dbname='aisi';
$charset = 'utf8';

//实例化对象

$db = new Mysql($hostname,$username,$password,$dbname);

//获取一条数据

$sql = "SELECT count(as_article_id) as count FROM as_article where as_article_type_id=1";
$count = $db->getOne($sql);

//获取多条数据

$sql = "SELECT * FROM as_article where as_article_type_id=1 order by as_article_addtime desc limit $start,$limit";
$service = $db->getAll($sql);

//插入数据

$arr = array(
'as_article_title'=>'数据库操作类',
'as_article_author'=>'rex',
);
$res = $db->insert('as_article',$arr);

//更新数据

$arr = array(
'as_article_title'=>'实例化对象',
'as_article_author'=>'Lee',
);
$where = "as_article_id=1";
$res = $db->update('as_article',$arr,$where);

//删除数据

$where = "as_article_id=1";
$res = $db->del('as_article',$where);

?>

演示完代码,大概说几句。

  getOne方法传入$sql的sql语句用于查询单条数据并返回一维数组;getAll方法同样传入sql语句,用于查询多条数据,并返回二维数组;insert方法传入表名和关联数组,返回boolen型或者插入数据对应索引;update方法传入表名、关联数组和条件,返回boolen或者影响的行数;del方法传入表名和条件,返回boolen型。

  that's all,but not the all.有兴趣的朋友可以把getOne和getAll直接传入sql语句作为参数的方式再优化一下。


# php  # mysql操作类  # php mysql数据库操作类  # 全新的PDO数据库操作类php版(仅适用Mysql)  # PHP数据库操作之基于Mysqli的数据库操作类库  # PHP实现PDO的mysql数据库操作类  # php下mysql数据库操作类(改自discuz)  # 支持php4、php5的mysql数据库操作类  # discuz7 phpMysql操作类  # php实现可用于mysql  # mssql  # pg数据库操作类  # php实现Mysql简易操作类  # php实现的mysqldb读写分离操作类示例  # PHP实现的mysql操作类【MySQL与MySQLi方式】  # 字段名  # 单条  # 行数  # 请联系  # 多条  # 键值  # 返回值  # 句柄  # 有兴趣  # 说几句  # 连接数据库  # null  # return  # charset  # __construct  # function  # hostname  # string  # param  # dbname 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  实现点击下箭头变上箭头来回切换的两种方法【推荐】  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  如何快速上传自定义模板至建站之星?  新三国志曹操传主线渭水交兵攻略  百度浏览器如何管理插件 百度浏览器插件管理方法  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  html5源代码发行怎么设置权限_访问权限控制方法与实践【指南】  Android使用GridView实现日历的简单功能  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  大连 网站制作,大连天途有线官网?  品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  如何基于PHP生成高效IDC网络公司建站源码?  微信公众帐号开发教程之图文消息全攻略  微信小程序 闭包写法详细介绍  西安专业网站制作公司有哪些,陕西省建行官方网站?  详解Android图表 MPAndroidChart折线图  昵图网官网入口 昵图网素材平台官方入口  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  java ZXing生成二维码及条码实例分享  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  C#如何调用原生C++ COM对象详解  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  javascript基本数据类型及类型检测常用方法小结  phpredis提高消息队列的实时性方法(推荐)  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  如何快速搭建安全的FTP站点?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何基于云服务器快速搭建网站及云盘系统?  音响网站制作视频教程,隆霸音响官方网站?  Laravel如何自定义错误页面(404, 500)?(代码示例)  如何在新浪SAE免费搭建个人博客?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Angular 表单中正确绑定输入值以确保提交与验证正常工作  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南  Laravel如何生成API文档?(Swagger/OpenAPI教程)  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Swift中循环语句中的转移语句 break 和 continue