DAOMYSQLI工具类
<?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工具类的更多相关文章
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- Android—关于自定义对话框的工具类
开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...
- [转]Java常用工具类集合
转自:http://blog.csdn.net/justdb/article/details/8653166 数据库连接工具类——仅仅获得连接对象 ConnDB.java package com.ut ...
- js常用工具类.
一些js的工具类 复制代码 /** * Created by sevennight on 15-1-31. * js常用工具类 */ /** * 方法作用:[格式化时间] * 使用方法 * 示例: * ...
- Guava库介绍之实用工具类
作者:Jack47 转载请保留作者和原文出处 欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 本文是我写的Google开源的Java编程库Guava系列之一,主要介 ...
- Java程序员的日常—— Arrays工具类的使用
这个类在日常的开发中,还是非常常用的.今天就总结一下Arrays工具类的常用方法.最常用的就是asList,sort,toStream,equals,copyOf了.另外可以深入学习下Arrays的排 ...
- .net使用正则表达式校验、匹配字符工具类
开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: /// <summary> /// 字符(串)验证.匹配工具类 /// </summary> public c ...
- WebUtils-网络请求工具类
网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...
- JAVA 日期格式工具类DateUtil.java
DateUtil.java package pers.kangxu.datautils.utils; import java.text.SimpleDateFormat; import java.ut ...
随机推荐
- 解决java中按照数字大小来排序文件
我们想要输出(1.jpg.2.jpg.3.jpg.10.jpg.11.jpg.20.jpg.21.jpg.31.jpg) 突然看到网上一些写法 总结:既然自己按照定义的文件名规则来处理,也可以进行使用 ...
- Codeforces Round #564 (Div. 2) C. Nauuo and Cards
链接:https://codeforces.com/contest/1173/problem/C 题意: Nauuo is a girl who loves playing cards. One da ...
- org.apache.ibatis.binding.BindingException【原因汇总】
这个问题整整纠结了我四个多小时,心好累啊...不废话... 背景:Spring整合Mybatis 报错:org.apache.ibatis.binding.BindingException: Inva ...
- 关系型数据库---MySQL---数据表
1.在创建一个新的MySQL数据表时,可以为它设置一个类型: 2.MySQL支持多种数据表类型,有各自的特点和属性,最重要的3种类型: 1.1 MyISAM 1.2 InnoDB 1.1 可以把Inn ...
- DevExpress GridControl 控件二表连动
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- spring的2种类型转换器
spring有2种类型转换器,一种是propertyEditor,一种是Converter.虽然都是类型转换,但是还是有细微差别. 所以这里以一个例子的形式来分析一下这2种类型转换的使用场景和差别. ...
- HandlerMapping执行过程。。。
1.web.xml DispatcherServlet 类 寻址 doDispatch() 2.getHandler(requset) 点击,进入 3.HandlerMapping hm=xxxxxx ...
- 客户端rsyslog配置文件详解
客户端rsyslog配置文件详解 最近再开发一个rsyslog的接收服务端,支持udp,tcp和tls三种协议.所以去仔细研究了一下rsyslog.conf的配置文件,下面来详细说一下. 因为我这儿重 ...
- Web前端体系的脉络结构
Web前端技术由 html.css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言.而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学 ...
- CSS冗余简化(持续更新)
1.float属性会把元素默认成inline-block状态,不需要再专门定义display了 2.对于inline而言,您设置line-height多大,很多时候并不需要定义height,其实际占据 ...