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 相关文章推荐
获得Google PR值的PHP代码
Jan 28 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
php日历制作代码分享
Jan 20 PHP
学习php中的正则表达式
Aug 17 PHP
php数组索引的Key加引号和不加引号的区别
Aug 19 PHP
php批量添加数据与批量更新数据的实现方法
Dec 16 PHP
ThinkPHP模型详解
Jul 27 PHP
浅析php设计模式之数据对象映射模式
Mar 03 PHP
phpcms的分类名称和类别名称的调用
Jan 05 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
Thinkphp5.0框架的Db操作实例分析【连接、增删改查、链式操作等】
Oct 11 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 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 UTF8 文件的签名问题
2009/10/30 PHP
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
php中current、next与reset函数用法实例
2014/11/17 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
PHP操作Redis数据库常用方法示例
2018/08/25 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
JQuery开发的数独游戏代码
2010/10/29 Javascript
jquery创建并行对象或者合并对象的实现代码
2012/10/10 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
对之前写的jquery分页做下升级
2014/06/19 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
详解JavaScript的Date对象(制作简易钟表)
2020/04/07 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
JS实现动态给标签控件添加事件的方法示例
2017/05/13 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
微信小程序实现点击按钮修改字体颜色功能【附demo源码下载】
2017/12/05 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
Postman参数化实现过程及原理解析
2020/08/13 Javascript
vue 扩展现有组件的操作
2020/08/14 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
Python使用flask框架操作sqlite3的两种方式
2018/01/31 Python
TensorFlow高效读取数据的方法示例
2018/02/06 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
python的链表基础知识点
2020/09/13 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
python3判断IP地址的方法
2021/03/04 Python
大学生就业策划书范文
2014/04/04 职场文书
优秀语文教师事迹
2014/05/18 职场文书
学校宣传标语
2014/06/18 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
国际贸易实训报告
2014/11/05 职场文书
普希金的诗歌赏析(3首)
2019/08/20 职场文书