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 相关文章推荐
phpfans留言版用到的install.php
Jan 04 PHP
PHP和XSS跨站攻击的防范
Apr 17 PHP
网站用php实现paypal整合方法
Nov 28 PHP
PHP在字符断点处截断文字的实现代码
Apr 21 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
PHP图像处理之使用imagecolorallocate()函数设置颜色例子
Nov 19 PHP
php根据指定位置和长度获得子字符串的方法
Mar 17 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
tp5使用layui实现多个图片上传(带附件选择)的方法实例
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 eval函数使用介绍
2013/12/08 PHP
PHP小教程之实现链表
2014/06/09 PHP
PHP中__FILE__、dirname与basename用法实例分析
2014/12/01 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
javascript中字符串拼接需注意的问题
2010/07/13 Javascript
javascript设计模式之工厂模式示例讲解
2014/03/04 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
javascript实现全角与半角字符的转换
2015/01/07 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
基于Vue的移动端图片裁剪组件功能
2017/11/28 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
2018/09/17 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python如何读取MySQL数据库表数据
2017/03/11 Python
100行python代码实现跳一跳辅助程序
2018/01/15 Python
Python全局变量与局部变量区别及用法分析
2018/09/03 Python
python实现字符串中字符分类及个数统计
2018/09/28 Python
python pands实现execl转csv 并修改csv指定列的方法
2018/12/12 Python
python set内置函数的具体使用
2019/07/02 Python
python中@property和property函数常见使用方法示例
2019/10/21 Python
Python编写单元测试代码实例
2020/09/10 Python
YSL圣罗兰美妆美国官网:Yves Saint Lauret US
2016/11/21 全球购物
家得宝墨西哥官网:The Home Depot墨西哥
2019/11/18 全球购物
高中生期末评语
2014/01/28 职场文书
通信工程求职信
2014/07/16 职场文书
教师节简报
2015/07/20 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
Python获取江苏疫情实时数据及爬虫分析
2021/08/02 Python
在MySQL中你成功的避开了所有索引
2022/04/20 MySQL