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中数据的批量导入(csv文件)
Oct 09 PHP
详细介绍PHP应用提速面面观
Oct 09 PHP
一个php作的文本留言本的例子(六)
Oct 09 PHP
PHP中用header图片地址 简单隐藏图片源地址
Apr 09 PHP
php学习笔记之 函数声明(二)
Jun 09 PHP
php 抽象类的简单应用
Sep 06 PHP
浅析php中常量,变量的作用域和生存周期
Aug 10 PHP
PHP获取表单所有复选框的值的方法
Aug 28 PHP
php计算两个文件相对路径的方法
Mar 14 PHP
PHP会话控制实例分析
Dec 24 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP 获取 ping 时间的实现方法
Sep 29 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文件上传类实例讲解
2015/10/27 PHP
微信公众平台开发教程①获取用户Openid及个人信息图文详解
2019/04/10 PHP
JavaScript 加号(+)运算符号
2009/12/06 Javascript
extjs 为某个事件设置拦截器
2010/01/15 Javascript
javascript复制对象使用说明
2011/06/28 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
5款JavaScript代码压缩工具推荐
2014/07/07 Javascript
JavaScript indexOf方法入门实例(计算指定字符在字符串中首次出现的位置)
2014/10/17 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
用svg制作富有动态的tooltip
2015/07/17 Javascript
JS访问DOM节点方法详解
2016/11/29 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
深究AngularJS——ng-checked(回写:带真实案例代码)
2017/06/13 Javascript
jQuery实现文本显示一段时间后隐藏的方法分析
2019/06/20 jQuery
vue实现图片上传预览功能
2019/12/23 Javascript
Openlayers显示地理位置坐标的方法
2020/09/28 Javascript
python实现的一只从百度开始不断搜索的小爬虫
2013/08/13 Python
Python 实现一个颜色色值转换的小工具
2016/12/06 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
python处理写入数据代码讲解
2020/10/22 Python
python 实现超级玛丽游戏
2020/11/25 Python
pycharm 实现光标快速移动到括号外或行尾的操作
2021/02/05 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
省三好学生申请材料
2014/01/22 职场文书
招聘专员岗位职责
2014/03/07 职场文书
医生见习报告范文
2014/11/03 职场文书
家长通知书家长意见
2014/12/30 职场文书
营业员岗位职责范本
2015/04/14 职场文书
放假通知
2015/04/14 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书
2019销售早会主持词
2019/06/27 职场文书