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


Posted in PHP onAugust 06, 2017

接着稍微说说整体的思路。整个类的封装,包含一个连接数据库的私有属性$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 相关文章推荐
一周学会PHP(视频)Http下载
Dec 12 PHP
php设计模式 Visitor 访问者模式
Jun 28 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
PHP数组排序之sort、asort与ksort用法实例
Sep 08 PHP
php实现模拟post请求用法实例
Jul 11 PHP
Yii2 输出xml格式数据的方法
May 03 PHP
PHP实现生成带背景的图形验证码功能
Oct 03 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
Apr 25 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
YII2框架中查询生成器Query()的使用方法示例
Mar 18 PHP
一次项目中Thinkphp绕过禁用函数的实战记录
Nov 17 PHP
PHP基于自定义类随机生成姓名的方法示例
Aug 05 #PHP
PHP实现腾讯与百度坐标转换
Aug 05 #PHP
laravel5.4生成验证码的实例讲解
Aug 05 #PHP
CakePHP框架Model函数定义方法示例
Aug 04 #PHP
CakePHP框架Model关联对象用法分析
Aug 04 #PHP
PHP实现将优酷土豆腾讯视频html地址转换成flash swf地址的方法
Aug 04 #PHP
Win10 下安装配置IIS + MySQL + nginx + php7.1.7
Aug 04 #PHP
You might like
php调用mysql存储过程
2007/02/14 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
基于jquery.Jcrop的头像编辑器
2010/03/01 Javascript
腾讯与新浪的通过IP地址获取当前地理位置(省份)的接口
2010/07/26 Javascript
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
js正则表达式replace替换变量方法
2016/05/21 Javascript
jQuery倒计时代码(超简单)
2017/02/27 Javascript
使用Vue自定义指令实现Select组件
2018/05/24 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
Vue自定义表单内容检查rules实例
2020/10/30 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
使用python获取CPU和内存信息的思路与实现(linux系统)
2014/01/03 Python
Python性能优化的20条建议
2014/10/25 Python
python实现网站的模拟登录
2016/01/04 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
python和opencv实现抠图
2018/07/18 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
python使用tkinter库实现五子棋游戏
2019/06/18 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
处理python中多线程与多进程中的数据共享问题
2019/07/28 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
Python自动登录QQ的实现示例
2020/08/28 Python
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
工程售后服务承诺书
2014/05/21 职场文书
妇女工作先进事迹
2014/08/17 职场文书
简易离婚协议书范本
2014/10/24 职场文书
初一军训感言
2015/08/01 职场文书
CSS3 制作的悬停缩放特效
2021/04/13 HTML / CSS
Jupyter notebook 更改文件打开的默认路径操作
2021/05/21 Python
基于Python实现流星雨效果的绘制
2022/03/18 Python
PYTHON InceptionV3模型的复现详解
2022/05/06 Python