php mysql数据库操作类(实例讲解)

 更新时间:2017年08月06日 17:07:05   作者:李盛鹏  
本白演示的代码属于较为简单的数据库封装类,较适合初学,需要的朋友可以参考下

接着稍微说说整体的思路。整个类的封装,包含一个连接数据库的私有属性$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仿博客园 个人博客(2) 数据库增添改删

    PHP仿博客园 个人博客(2) 数据库增添改删

    先谢谢大家的鼓励与支持,这是第2篇了。也是这个博客系统最核心的东西。这个博客写完后,我会把它放在我的博客网站。这里也有我的一个简历
    2013-07-07
  • php 问卷调查结果统计

    php 问卷调查结果统计

    一个新产品投入市场,要先做问卷调查,考察这个产品在市场的需求量,本篇文章主要跟大家介绍使用php问卷调查结果统计,感兴趣的朋友一起学习吧
    2015-10-10
  • php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法

    php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法

    抓取网页内容,分析网页数据经常使用php curl,简洁易用,本篇文章通过代码实例给大家讲解 php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法,需要的朋友参考下
    2015-11-11
  • Laravel5中contracts详解

    Laravel5中contracts详解

    在Laravel5中出现了一个新的东西,叫做contracts,那么它到底是什么?有什么用?怎么用?我们就来探讨下吧。
    2015-03-03
  • php导入模块文件分享

    php导入模块文件分享

    本文给大家分享的是php导入模块文件分享,主要参数有导入文件路径字符串,可以用"."代替"/", 导入文件类型的扩展名(带"."号),也可以是class/inc(简写方式), 如果导入成功则返回true,否则返回异常对象,有需要的小伙伴参考下吧。
    2015-03-03
  • PHP中通过getopt解析GNU C风格命令行选项

    PHP中通过getopt解析GNU C风格命令行选项

    这篇文章主要介绍了PHP中通过getopt解析GNU C风格命令行选项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • PHP仿博客园 个人博客(1) 数据库与界面设计

    PHP仿博客园 个人博客(1) 数据库与界面设计

    自学PHP大半年多了,断断续续地,但是最终还是坚定了我的想法,将PHP继续下去,所以写这个PHP的博客是为了找个稳定的 PHP工作,不求工资多高,但求一收留之地
    2013-07-07
  • PHP 超高性能可扩展HTTP服务框架Webman

    PHP 超高性能可扩展HTTP服务框架Webman

    本文主要介绍了超高性能可扩展HTTP服务框架Webman,webman用于替代传统的php-fpm架构,提供超高性能可扩展的HTTP服务,感兴趣的可以了解一下
    2024-02-02
  • PHP获取input输入框中的值去数据库比较显示出来

    PHP获取input输入框中的值去数据库比较显示出来

    这篇文章主要介绍了PHP获取input输入框中的值去数据库比较显示出来的相关资料,前端还算比较简单,php后台接受并查询,本文给大家介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-11-11
  • php结合ajax实现赞、顶、踩功能实例

    php结合ajax实现赞、顶、踩功能实例

    这篇文章主要介绍了php结合ajax实现赞、顶、踩功能实例,包含PHP代码、JS代码和数据库端代码,非常详细,入门非常好的例子,需要的朋友可以参考下
    2014-05-05

最新评论