<?php

    //DAOMySQLI.class.php

    //完成对mysql数据库操作,单例模式

    //开发类
//1. 定类名
//2. 定成员属性
//3. 定成员方法[查询,dml操作] final class DAOMySQLi{ // 将成员属性以 _开头是一种命名风格. 老外比较喜欢.
//主机名
private $_host;
private $_user;
private $_pwd;
private $_dbname;
private $_port;
private $_charset; //因为我们做成单例
// $_instance : 表示DAOMySQLi 的一个对象实例
private static $_instance; // 有个mysqli连接[对象]
private $_mySQLi; //定构造方法.
//option : 选项
private function __construct(array $option){ //初识化数据库属性
$this->_initOption($option); //初始化_mySQLi属性
$this->_initMySQLi(); } private function _initMySQLi(){ //初始化我们的 _mySQLi
$this->_mySQLi = new MySQLi($this->_host, $this->_user, $this->_pwd, $this->_dbname, $this->_port); if($this->_mySQLi->connect_errno){ die('连接失败 , 错误信息时候' . $this->_mySQLi->connect_error);
} //设置字符集
$this->_mySQLi->set_charset($this->_charset); } //一个函数,用于初始化连接数据库选项
private function _initOption(array $option){ //验证数据
$this->_host = isset($option['host'])? $option['host'] : '';
$this->_user = isset($option['user'])? $option['user'] : '';
$this->_pwd = isset($option['pwd'])? $option['pwd'] : '';
$this->_dbname = isset($option['dbname'])? $option['dbname'] : '';
$this->_port = isset($option['port'])? $option['port'] : '';
$this->_charset = isset($option['charset'])? $option['charset'] : ''; if($this->_host == '' || $this->_user == '' || $this->_pwd == '' || $this->_dbname == '' || $this->_port == '' || $this->_charset == ''){
die('参数传入有误!');
} } //定义一个静态方法 getSingleton..
public static function getSingleton(array $option){ //判断是否已经有对象实例
if(!self::$_instance instanceof self){
//创建一个对象
self::$_instance = new self($option);
}
return self::$_instance;
} //防止克隆
private function __clone(){} //编写一个成员方法,完成对数据表的查询
public function fetchAll($sql){ //定义一个空数组[封装数据]
$arr = array(); if($res = $this->_mySQLi->query($sql)){ //{把 $res 对象返回给调用者
//问题1. 一般情况下,我们程序员希望将$res对象尽快释放.
//解决思路:
//(1)$res ==数据===>$arr
while($row = $res->fetch_assoc()){
$arr[] = $row;
}
//(2)释放$res
$res->free();
//(3)返回数组
return $arr; }else{
//失败
echo '<br> 执行失败 sql语句是' . $sql;
echo '<br> 失败的原因是 ' . $this->_mySQLi->error;
exit;
}
} //编写一个方法,完成对表的dml操作
public function query($sql){ if($this->_mySQLi->query($sql)){ return true;
}else{
//失败
echo '<br> 执行失败 sql语句是' . $sql;
echo '<br> 失败的原因是 ' . $this->_mySQLi->error;
exit;
}
} } ?>

DAOMYSQLI工具类的更多相关文章

  1. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  2. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  3. [转]Java常用工具类集合

    转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...

  4. js常用工具类.

    一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...

  5. Guava库介绍之实用工具类

    作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...

  6. Java程序员的日常—— Arrays工具类的使用

    这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...

  7. .net使用正则表达式校验、匹配字符工具类

    开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...

  8. WebUtils-网络请求工具类

    网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...

  9. JAVA 日期格式工具类DateUtil.java

    DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...

随机推荐

  1. python3的encode()和decode()

    python3的encode()和decode() 在python3的内存中. 在程序运行阶段. 使⽤用的是unicode编码. 因为unicode是万国码. 什么内容都可以进行显示. 那么在数据传输 ...

  2. Luogu P1462 通往奥格瑞玛的道路 二分答案+最短路

    先二分答案,再跑最短路,跑的时候遇到 过路费超过二分的答案的 就不拿他更新最短路 #include<cstdio> #include<iostream> #include< ...

  3. Hive_Hive的数据模型_汇总

    体系结构: 元数据 /HQL的执行安装: 嵌入 /远程 /本地管理: CLI /web界面 /远程服务数据类型: 基本 /复杂 /时间数据模型: 数据存储 /内部表 /分区表 /外部表 /桶表 /视图 ...

  4. 关于企业邮箱无法提醒解决办法(未安装邮件客户端可添加至网易邮箱大师/qq邮箱等)

    关于企业邮箱无法提醒解决办法: 一.使用现有的邮箱客户端,以下以网易的邮箱大师为例mail.exe 点击客户端左边的添加邮箱账号,在出现的对话框中输入账号和密码后,点击登陆按钮后,等待添加完成即可,邮 ...

  5. openstack安装newton版本dashboard+cinder(六)

    一.dashboard 1.安装dashboard及配置 [root@linux-node1 ~]# yum install openstack-dashboard -y #可以装任何地方只要能连接 ...

  6. Golang 入门系列(十三)用Beego开发web应用

    接着之前的内容,前面已经讲过很多Golang的基础语法,mysql的使用,redis的使用,也讲了orm框架,如何创建一个webapi 服务等等,感兴趣的可以看看以前的文章,https://www.c ...

  7. Redis数据库2

    一.存储list 1.概述     list类型是按照插入顺序排序的字符串链表,可以在头部(left)和尾部(right)添加新的元素,如果不存在,则自动创建;如果list中所有元素被移除,则list ...

  8. HttpServeletRequest

    一.HttpServeletRequest 接口(javax.servlet.http) 定义:public interface HttpServletRequestextends ServletRe ...

  9. Mac下安装ElasticSearch及其插件

    目录 环境介绍 安装过程 安装Kibana 环境介绍 软件版本:ElasticSearch7.0.0 Kibana7.0.0 系统环境:mac 环境 安装过程 官网下载 ElasticSearch7. ...

  10. SQL Server 2012安装配置(Part1 )

    1 安装前准备 安装 SQL Server 2012 服务器及客户端前,需要提前做以下两项准备: SQL Server2012 依赖于.Net Framework 3.5.1 组件.Windows S ...