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 相关文章推荐
一个程序下载的管理程序(四)
Oct 09 PHP
php多层数组与对象的转换实例代码
Aug 05 PHP
ThinkPHP的Widget扩展实例
Jun 19 PHP
在Ubuntu 14.04上部署 PHP 环境及 WordPress
Sep 02 PHP
Dwz与thinkphp整合下的数据导出到Excel实例
Dec 04 PHP
phplot生成图片类用法详解
Jan 06 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
基于jQueryUI和Corethink实现百度的搜索提示功能
Nov 09 PHP
PHP实现合并两个排序链表的方法
Jan 19 PHP
PHP常用正则表达式精选(推荐)
May 28 PHP
Smarty模板语法详解
Jul 20 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加密解密的代码
2006/10/09 PHP
php sprintf()函数让你的sql操作更安全
2008/07/23 PHP
PHP 进程锁定问题分析研究
2009/11/24 PHP
浅析is_writable的php实现
2013/06/18 PHP
PHP实现生成透明背景的PNG缩略图函数分享
2014/07/08 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
来自国外的页面JavaScript文件优化
2010/12/08 Javascript
jquery一句话全选/取消全选
2011/03/01 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
js获取光标位置和设置文本框光标位置示例代码
2014/01/09 Javascript
将查询条件的input、select清空
2014/01/14 Javascript
详谈JavaScript 匿名函数及闭包
2014/11/14 Javascript
javascript动态添加删除tabs标签的方法
2015/07/06 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
Vue.js2.0中的变化小结
2017/10/24 Javascript
layui实现数据分页功能
2019/07/27 Javascript
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python更新数据库脚本两种方法及对比介绍
2017/07/27 Python
不同版本中Python matplotlib.pyplot.draw()界面绘制异常问题的解决
2017/09/24 Python
Pandas之MultiIndex对象的示例详解
2019/06/25 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Contém1g官网:巴西彩妆品牌
2020/01/17 全球购物
地下停车场租赁协议范本
2014/10/07 职场文书
考试作弊检讨书范文
2015/01/27 职场文书
街道社区活动报告
2015/02/05 职场文书
热血教师观后感
2015/06/10 职场文书
Pandas加速代码之避免使用for循环
2021/05/30 Python
Windows11性能真的上涨35%? 桌面酷睿i9实测结果公开
2021/11/21 数码科技
经典《舰娘》游改全新动画预告 预定11月开播
2022/04/01 日漫
CI Games宣布《堕落之王2》使用虚幻引擎5制作 预计将于2023年正式发售
2022/04/11 其他游戏
MySQL transaction事务安全示例讲解
2022/06/21 MySQL