php基于单例模式封装mysql类完整实例


Posted in PHP onOctober 18, 2016

本文实例讲述了php基于单例模式封装mysql类。分享给大家供大家参考,具体如下:

类:

<?php
header("content-type:text/html;charset=utf-8");
//封装一个类
/*
掌握满足单例模式的必要条件
(1)私有的构造方法-为了防止在类外使用new关键字实例化对象
(2)私有的成员属性-为了防止在类外引入这个存放对象的属性
(3)私有的克隆方法-为了防止在类外通过clone成生另一个对象
(4)公有的静态方法-为了让用户进行实例化对象的操作
*/
class db{
  //三私一共
  //私有的静态属性
  private static $dbcon=false;
  //私有的构造方法
  private function __construct(){
  $dbcon=@mysql_connect("localhost","root","root");
   mysql_select_db("small2",$dbcon) or die("mysql_connect error");
   mysql_query("set names utf8");
  }
  //私有的克隆方法
  private function __clone(){}
  //公用的静态方法
  public static function getIntance(){
   if(self::$dbcon==false){
    self::$dbcon=new self;
   }
   return self::$dbcon;
  }
  //打印数据
  public function p($arr){
    echo "<pre>";
    print_r($arr);
    echo "</pre>";
  }
  public function v($arr){
  echo "<pre>";
    var_dump($arr);
    echo "</pre>";
  }
  //执行语句
  public function query($sql){
  $query=mysql_query($sql);
   return $query;
  }
  /**
  * 查询某个字段
  * @param
  * @return string or int
  */
  public function getOne($sql){
   $query=$this->query($sql);
    return mysql_result($query,0);
  }
  //获取一行记录,return array 一维数组
  public function getRow($sql,$type="assoc"){
   $query=$this->query($sql);
   if(!in_array($type,array("assoc",'array',"row"))){
     die("mysql_query error");
   }
   $funcname="mysql_fetch_".$type;
   return $funcname($query);
  }
  //获取一条记录,前置条件通过资源获取一条记录
  public function getFormSource($query,$type="assoc"){
  if(!in_array($type,array("assoc","array","row")))
  {
    die("mysql_query error");
  }
  $funcname="mysql_fetch_".$type;
  return $funcname($query);
  }
  //获取多条数据,二维数组
  public function getAll($sql){
   $query=$this->query($sql);
   $list=array();
   while ($r=$this->getFormSource($query)) {
    $list[]=$r;
   }
   return $list;
  }
  //获得最后一条记录id
  public function getInsertid(){
   return mysql_insert_id();
  }
   /**
   * 定义添加数据的方法
   * @param string $table 表名
   * @param string orarray $data [数据]
   * @return int 最新添加的id
   */
   public function insert($table,$data){
   //遍历数组,得到每一个字段和字段的值
   $key_str='';
   $v_str='';
   foreach($data as $key=>$v){
    if(empty($v)){
     die("error");
   }
      //$key的值是每一个字段s一个字段所对应的值
      $key_str.=$key.',';
      $v_str.="'$v',";
   }
   $key_str=trim($key_str,',');
   $v_str=trim($v_str,',');
   //判断数据是否为空
   $sql="insert into $table ($key_str) values ($v_str)";
   $this->query($sql);
 //返回上一次增加操做产生ID值
   return mysql_insert_id();
 }
 /*
  * 删除一条数据方法
  * @param1 $table, $where=array('id'=>'1') 表名 条件
  * @return 受影响的行数
  */
  public function deleteOne($table, $where){
    if(is_array($where)){
      foreach ($where as $key => $val) {
        $condition = $key.'='.$val;
      }
    } else {
      $condition = $where;
    }
    $sql = "delete from $table where $condition";
    $this->query($sql);
    //返回受影响的行数
    return mysql_affected_rows();
  }
  /*
  * 删除多条数据方法
  * @param1 $table, $where 表名 条件
  * @return 受影响的行数
  */
  public function deleteAll($table, $where){
    if(is_array($where)){
      foreach ($where as $key => $val) {
        if(is_array($val)){
          $condition = $key.' in ('.implode(',', $val) .')';
        } else {
          $condition = $key. '=' .$val;
        }
      }
    } else {
      $condition = $where;
    }
    $sql = "delete from $table where $condition";
    $this->query($sql);
    //返回受影响的行数
    return mysql_affected_rows();
  }
 /**
  * [修改操作description]
  * @param [type] $table [表名]
  * @param [type] $data [数据]
  * @param [type] $where [条件]
  * @return [type]
  */
 public function update($table,$data,$where){
   //遍历数组,得到每一个字段和字段的值
   $str='';
  foreach($data as $key=>$v){
   $str.="$key='$v',";
  }
  $str=rtrim($str,',');
  //修改SQL语句
  $sql="update $table set $str where $where";
  $this->query($sql);
  //返回受影响的行数
  return mysql_affected_rows();
 }
}
?>

测试:

//mysql测试
//$db=db::getIntance();
//var_dump($db);
/*$sql="select * from acticle";
$list=$db->getAll($sql);
$db->p($list);*/
/*$sql="select * from acticle where acticle_id=95";
$list=$db->getRow($sql);
$db->p($list);
*/
/*$sql="select title from acticle";
$list=$db->getOne($sql);
$db->p($list);*/
//$list=$db->insert("users",$_POST);
//$del=$db->deleteOne("users","id=26");
//$del=$db->deleteAll("users","id in(23,24)");
//$up=$db->update("users",$_POST,"id=27");
//$id=$db->getInsertid();
//print_R($id);

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 搜索框提示(自动完成)实例代码
Feb 05 PHP
php实现rc4加密算法代码
Apr 25 PHP
PHP递归调用的小技巧讲解
Feb 19 PHP
ThinkPHP实现将本地文件打包成zip下载
Jun 26 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
PHP开启opcache提升代码性能
Apr 26 PHP
php截取视频指定帧为图片
May 16 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
laravel 5.1下php artisan migrate的使用注意事项总结
Jun 07 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 PHP
php的命名空间与自动加载实现方法
Aug 25 PHP
详解phpstorm2020最新破解方法
Sep 17 PHP
php封装的mysqli类完整实例
Oct 18 #PHP
PHP实现文件上传下载实例
Oct 18 #PHP
Yii实现文章列表置顶功能示例
Oct 18 #PHP
Yii统计不同类型邮箱数量的方法
Oct 18 #PHP
详解PHP归并排序的实现
Oct 18 #PHP
Yii框架中sphinx索引配置方法解析
Oct 18 #PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 #PHP
You might like
php中的实现trim函数代码
2007/03/19 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
Prototype源码浅析 String部分(四)之补充
2012/01/16 Javascript
JavaScript中Boolean对象的属性解析
2015/10/21 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
vue2.0 根据状态值进行样式的改变展示方法
2018/03/13 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
解决vue-cli项目打包出现空白页和路径错误的问题
2018/09/04 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
Vue之beforeEach非登录不能访问的实现(代码亲测)
2019/07/18 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
VSCode launch.json配置详细教程
2020/06/18 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
python中实现指定时间调用函数示例代码
2017/09/08 Python
Python pandas常用函数详解
2018/02/07 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
Python简单I/O操作示例
2019/03/18 Python
centos7之Python3.74安装教程
2019/08/15 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
优秀员工年终发言演讲稿
2014/01/01 职场文书
经典商业广告词
2014/03/13 职场文书
同学聚会主持词
2014/03/18 职场文书
节水倡议书范文
2014/04/15 职场文书
护理学专业求职信
2014/06/29 职场文书
建设工程授权委托书
2014/09/22 职场文书
绿色校园广播稿
2014/10/13 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
2015年员工工作总结范文
2015/04/08 职场文书
2015年大学生工作总结
2015/04/21 职场文书
小学生表扬稿范文
2015/05/05 职场文书
SQL Server代理:理解SQL代理错误日志处理方法
2021/06/30 SQL Server