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 相关文章推荐
substr()函数中文版
Oct 09 PHP
windows xp下安装pear
Dec 02 PHP
PHP版自动生成文章摘要
Jul 23 PHP
PHP的cURL库功能简介 抓取网页、POST数据及其他
Apr 07 PHP
php _autoload自动加载类与机制分析
Feb 10 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
PHP中使用CURL获取页面title例子
Jan 07 PHP
试用php中oci8扩展
Jun 18 PHP
PHP微信公众号自动发送红包API
Jun 01 PHP
Laravel 中使用 Vue.js 实现基于 Ajax 的表单提交错误验证操作
Jun 30 PHP
php中字符串和整数比较的操作方法
Jun 06 PHP
PHP code 验证码生成类定义和简单使用示例
May 27 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内存溢出问题的解决方法
2013/06/25 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
js对列表中第一个值处理与jsp页面对列表中第一个值处理的区别详解
2013/11/05 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
2016/01/26 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
EasyUI学习之DataGird分页显示数据
2016/12/29 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
js实现放大镜特效
2017/05/18 Javascript
详解angularJS动态生成的页面中ng-click无效解决办法
2017/06/19 Javascript
axios进阶实践之利用最优雅的方式写ajax请求
2017/12/20 Javascript
详解如何在React组件“外”使用父组件的Props
2018/01/12 Javascript
vue自定义filters过滤器
2018/04/26 Javascript
微信小程序对图片进行canvas压缩的方法示例详解
2020/11/12 Javascript
python生成器的使用方法
2013/11/21 Python
python2 与python3的print区别小结
2018/01/16 Python
Python爬虫实例扒取2345天气预报
2018/03/04 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python3 assert断言实现原理解析
2020/03/02 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
canvas需要在标签里直接定义宽高
2014/12/17 HTML / CSS
HTML5中meta属性的使用方法
2016/02/29 HTML / CSS
HTML5中外部浏览器唤起微信分享
2020/01/02 HTML / CSS
有模特经验的简历自我评价
2013/09/19 职场文书
英文求职信结束语大全
2013/10/26 职场文书
董事长助理岗位职责
2014/02/18 职场文书
岗位说明书范文
2014/05/07 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2015年学校保卫部工作总结
2015/05/11 职场文书
史上最牛辞职信
2015/05/13 职场文书
2016年中学法制宣传日活动总结
2016/04/01 职场文书
React Native项目框架搭建的一些心得体会
2021/05/28 Javascript
python开发的自动化运维工具ansible详解
2021/08/07 Python