建立数据库访问类的封装
<?php
 
class DBDA
{
    public $host = "localhost"; //服务器地址
    public $uid = "root"; //数据库的用户名
    public $pwd = ""; //数据库的密码
    public $dbname = "";//数据库名
     
    //执行SQL语句,返回相应结果的函数
    //$sql是要执行的SQL语句
    //$type是SQL语句的类型,0代表增删改,1代表查询
    //$db代表要操作的数据库
    public function Query($sql,$type=1,$db="xm_youxiang")
    {
        //造连接对象
        $conn = new MySQLi($this->host,$this->uid,$this->pwd,$db);
         
        //判断连接是否成功
        !mysqli_connect_error() or die("连接失败!");
         
        //执行SQL语句
        $result = $conn->query($sql);
         
        //判断SQL语句类型
        if($type==1)
        {
            //如果是查询语句返回结果集的二维数组
            return $result->fetch_all();
        }
        else
        {
            //如果是其他语句,返回true或false
            return $result;
        }
    }
单例模式连接数据库封装类

单例模式有三大原则:

构造函数不能为public

有一个保存实例的静态成员变量

拥有访问这个实例的公共静态方法

基于单例模式的PHP数据库连接类:

class DB{
    static private $a;  //实例变量
    static private $b;  //
    private $dbquery = array(
        'host' => 'localhost',
        'uid' => 'root',
        'password' => '',
        'dbname' =>'数据库名',
    );
    private function __construct(){

}
    static public function show(){
        if(!(self::$a aof self)){
            self::$a = new self();
        }
        return self::$a;
    }

public function connect(){
        if(!self::$b){
            self::$b = mysql_connect($this->dbquery['host'],$this->dbquery['uid'],$this->dbquery['password']);
            if(!self::$b){
                die('mysql error'.mysql_error());
            }

//mysql_select_db($this->dbquery['dbname'],self::$b);
           //mysql_query("set names UTF8",self::$b);
        }
        return self::$b;
    }
}

使用时直接实例化
eg:$connect = DB::show()->connect();
 

最新文章

  1. angular2 问题请教
  2. EF支持mysq相关配置数码
  3. Android 中像素px和dp的转化
  4. cocos2dx的图片载入
  5. JMS - Temporary Destination
  6. jquery script
  7. Javascript参数传递中值和引用的一种理解
  8. 秒味课堂Angular js笔记------过滤器
  9. 【解决ViewPager在大屏上滑动不流畅】 设置ViewPager滑动翻页距离
  10. leetcode:Reverse Nodes in k-Group(以k为循环节反转链表)【面试算法题】
  11. Spark 2.x不支持ALTER TABLE ADD COLUMNS,没关系,我们改进下
  12. 第18天 ajax技术和javascript加强(json)
  13. Codeforces Round #520 (Div. 2) B. Math 唯一分解定理+贪心
  14. QQ机器人
  15. 一个SQL语句的优化(sqlserver)
  16. 利用谷歌网站的翻译网站,实现谷歌翻译api
  17. pandas 连接数据库直接查表建立dataframe。loc,sort_values数据清洗操作
  18. 【TCP ZeroWindow】与【TCP window Full】
  19. Beta冲刺——day6
  20. 进程间通信IPC -- 管道, 队列

热门文章

  1. ajax 执行成功 没有返回
  2. AITP
  3. Windows下使用Diskpart格式化U盘
  4. C#两个实体之间相同属性的映射
  5. 第十三节、SURF特征提取算法
  6. Day16--Python--初识面向对象
  7. Good Bye 2018
  8. selenium自动化测试原理和设计的分享
  9. c#Linq联合查询
  10. socket关闭状态问题