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缩略图等比例无损压缩,可填充空白区域补充色
Jun 10 PHP
基于MySQL体系结构的分析
May 02 PHP
php表单提交与$_POST实例分析
Jan 26 PHP
typecho插件编写教程(一):Hello World
May 28 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
PHP处理CSV表格文件的常用操作方法总结
Jul 01 PHP
PHP简单日历实现方法
Jul 20 PHP
PHP使用curl函数发送Post请求的注意事项
Nov 26 PHP
php如何修改SESSION的生存存储时间的实例代码
Jul 05 PHP
PHP实现登录注册之BootStrap表单功能
Sep 03 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
Laravel 实现关系模型取出需要的字段
Oct 10 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连接mysql数据库代码
2009/03/10 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
jQuery $.each的用法说明
2010/03/22 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
JavaScript实现隐藏省略文字效果的方法
2017/04/27 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
Vue实现图书管理案例
2021/01/20 Vue.js
vscode自定义vue模板的实现
2021/01/27 Vue.js
[44:50]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 TNC vs VG
2018/04/02 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
python的id()函数介绍
2013/02/10 Python
Python实现的批量下载RFC文档
2015/03/10 Python
Python类定义和类继承详解
2015/05/08 Python
基于Python实现的ID3决策树功能示例
2018/01/02 Python
Python3.5模块的定义、导入、优化操作图文详解
2019/04/27 Python
Python Lambda函数使用总结详解
2019/12/11 Python
Tensorflow之梯度裁剪的实现示例
2020/03/08 Python
基于FME使用Python过程图解
2020/05/13 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
2020/09/18 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
酒店管理专业毕业生推荐信
2013/11/10 职场文书
电脑饰品店的创业计划书
2014/01/21 职场文书
走近毛泽东观后感
2015/06/04 职场文书
无犯罪记录证明样本
2015/06/16 职场文书
2019年销售部季度工作计划3篇
2019/10/09 职场文书
MySQL 分页查询的优化技巧
2021/05/12 MySQL
Java 超详细讲解IO操作字节流与字符流
2022/03/25 Java/Android
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python
MySql数据库 查询时间序列间隔
2022/05/11 MySQL