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初学者写及时补给skype用户充话费的小程序
Nov 02 PHP
php插入中文到sqlserver 2008里出现乱码的解决办法分享
Jul 19 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
Jul 01 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
smarty缓存用法分析
Dec 16 PHP
PHP使用适合阅读的格式显示文件大小的方法
Mar 05 PHP
PHP编程中的__clone()方法使用详解
Nov 27 PHP
PHP+JQuery+Ajax实现分页方法详解
Aug 06 PHP
PHP实现查询手机归属地的方法详解
Apr 28 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
open_basedir restriction in effect. 原因与解决方法
Mar 14 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 数学运算验证码实现代码
2009/10/11 PHP
PHP基础学习小结
2011/04/17 PHP
如何利用php array_multisort函数 对数据库结果进行复杂排序
2013/06/08 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
2016/09/22 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
关于window.pageYOffset和document.documentElement.scrollTop
2011/04/05 Javascript
jQuery.buildFragment使用方法及思路分析
2013/01/07 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
详解JavaScript对W3C DOM模版的支持情况
2015/06/16 Javascript
javascript常用经典算法实例详解
2015/11/25 Javascript
jQuery实现简单日期格式化功能示例
2017/09/19 jQuery
AngularJS路由删除#符号解决的办法
2017/09/28 Javascript
JS实现小球的弹性碰撞效果
2017/11/11 Javascript
Vue DevTools调试工具的使用
2017/12/05 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
跟老齐学Python之总结参数的传递
2014/10/10 Python
利用python程序生成word和PDF文档的方法
2017/02/14 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Tensorflow的梯度异步更新示例
2020/01/23 Python
Python连接SQLite数据库并进行增册改查操作方法详解
2020/02/18 Python
Python 解决相对路径问题:&quot;No such file or directory&quot;
2020/06/05 Python
Python类型转换的魔术方法详解
2020/12/23 Python
入党积极分子自我鉴定
2014/02/18 职场文书
初中学校军训方案
2014/05/09 职场文书
关于旅游的活动方案
2014/08/15 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
优秀高中学生评语
2014/12/30 职场文书
分享15个Webpack实用的插件!!!
2021/03/31 Javascript
Redis实现订单过期删除的方法步骤
2022/06/05 Redis