mysqli DB封装
<?php class DB
{
//私有的属性
private static $dbcon = false;
private $host;
private $port;
private $user;
private $pass;
private $db;
private $charset;
private $link; //私有的构造方法
private function __construct($config = array())
{
$this->host = isset($config['host']) ? $config['host'] : '192.168.33.30';
$this->port = isset($config['port']) ? $config['port'] : '3306';
$this->user = isset($config['user']) ? $config['user'] : 'root';
$this->pass = isset($config['pass']) ? $config['pass'] : 'root';
$this->db = isset($config['db']) ? $config['db'] : 'test';
$this->charset = isset($arr['charset']) ? $arr['charset'] : 'utf8';
//连接数据库
$this->db_connect();
//选择数据库
$this->db_usedb();
//设置字符集
$this->db_charset();
} //连接数据库
private function db_connect()
{
$this->link = mysqli_connect($this->host . ':' . $this->port, $this->user, $this->pass);
if (!$this->link) {
echo "数据库连接失败<br>";
echo "错误编码" . mysqli_errno($this->link) . "<br>";
echo "错误信息" . mysqli_error($this->link) . "<br>";
exit;
}
} //设置字符集
private function db_charset()
{
mysqli_query($this->link, "set names {$this->charset}");
} //选择数据库
private function db_usedb()
{
mysqli_query($this->link, "use {$this->db}");
} //私有的克隆
private function __clone()
{
die('clone is not allowed');
} //公用的静态方法
public static function getIntance()
{
if (self::$dbcon == false) {
self::$dbcon = new self;
}
return self::$dbcon;
} //执行sql语句的方法
public function query($sql)
{
$res = mysqli_query($this->link, $sql);
if (!$res) {
echo "sql语句执行失败<br>";
echo "错误编码是" . mysqli_errno($this->link) . "<br>";
echo "错误信息是" . mysqli_error($this->link) . "<br>";
}
return $res;
} //打印数据
public function p($arr)
{
echo "<pre>";
print_r($arr);
echo "</pre>";
} public function v($arr)
{
echo "<pre>";
var_dump($arr);
echo "</pre>";
} //获得最后一条记录id
public function getInsertid()
{
return mysqli_insert_id($this->link);
} /**
* 查询某个字段
* @param
* @return string or int
*/
public function getOne($sql)
{
$query = $this->query($sql);
return mysqli_free_result($query);
} //获取一行记录,return array 一维数组
public function getRow($sql, $type = "assoc")
{
$query = $this->query($sql);
if (!in_array($type, array("assoc", 'array', "row"))) {
die("mysqli_query error");
}
$funcname = "mysqli_fetch_" . $type;
return $funcname($query);
} //获取一条记录,前置条件通过资源获取一条记录
public function getFormSource($query, $type = "assoc")
{
if (!in_array($type, array("assoc", "array", "row"))) {
die("mysqli_query error");
}
$funcname = "mysqli_fetch_" . $type;
return $funcname($query);
} //获取多条数据,二维数组
public function getAll($sql)
{
$query = $this->query($sql);
$list = array();
while ($r = $this->getFormSource($query)) {
$list[] = $r;
}
return $list;
} /**
* 定义添加数据的方法
* @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 $this->getInsertid();
} /*
* 删除一条数据方法
* @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 mysqli_affected_rows($this->link);
} /*
* 删除多条数据方法
* @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 mysqli_affected_rows($this->link);
} /**
* [修改操作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 mysqli_affected_rows($this->link);
}
} ?>
mysqli DB封装的更多相关文章
- php 之mysqli简单封装
1:DBHelper.class.php <?php class DBHelper{ private $mysqli; private static $host='127.0.0.1'; pri ...
- PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD)
原文: PHP5: mysqli 插入, 查询, 更新和删除 Insert Update Delete Using mysqli (CRUD) PHP 5 及以上版本建议使用以下方式连接 MySQL ...
- PHP5 mysqli 教程
mysqli提供了面向对象和面向过程两种方式来与数据库交互,分别看一下这两种方式. 1.面向对象 在面向对象的方式中,mysqli被封装成一个类,它的构造方法如下: __construct ([ st ...
- MySQL原生API、MySQLi面向过程、MySQLi面向对象、PDO操作MySQL
[转载]http://www.cnblogs.com/52fhy/p/5352304.html 本文将举详细例子向大家展示PHP是如何使用MySQL原生API.MySQLi面向过程.MySQLi面向对 ...
- 数据库连接 Mysqli
//数据库连接 Mysqli $db= new Mysqli("localhost","root","root","asd_808 ...
- mysqli实现增删改查(转)
1.面向对象 在面向对象的方式中,mysqli被封装成一个类,它的构造方法如下: __construct ([ string $host [, string $username [, string $ ...
- 测开之路一百三十三:实现sql函数封装
连接数据库的频率很高,所以把数据库操作封装起来 函数封装: def make_dicts(cursor, row): """ 将游标获取的Tuple根据数据库列表转换为d ...
- PHP mysqli扩展整理,包括面向过程和面向对象的比较\事务控制\批量执行\预处理
相关文章:PHP的mysql扩展整理,操作数据库的实现过程分析 PHP PDO扩展整理,包括环境配置\基本增删改查\事务\预处理 介绍 mysqli是PHP程序与mysql数据库进行数据交互的桥梁, ...
- PHP适配器模式
[IDatabase.php] <?php /** * 适配器模式 * 可以将不同的函数接口封装成统一的API * 应用举例1:数据库操作 mysql/mysqli/pdo * 应用举例2:缓存 ...
随机推荐
- 【CodeForces 915 C】Permute Digits(思维+模拟)
You are given two positive integer numbers a and b. Permute (change order) of the digits of a to con ...
- 【CodeForces 803 C】Maximal GCD(GCD+思维)
You are given positive integer number n. You should create such strictly increasingsequence of k pos ...
- Python常用的数据类型
Python常用的数据类型有很多,今天暂时介绍这三种,int(整数类型).str(字符串).bool(布尔类型)一.int(整数类型)1.不带小数的,integer 的缩写,常用于数据的计算或者大小的 ...
- 解决ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)【亲测有效】
文件转自:https://blog.csdn.net/hua1011161696/article/details/80666025 问题:(MySQL 5.6社区版windows版) 忘记密码或其他一 ...
- dedesmc 手机端生成静态页
dedesmc 手机端生成静态页 1.首先下载插件,下载地址:https://pan.baidu.com/s/1Nfx_KBYuxRkZ7VzoPxy28g 密码:83x7 2.进入 dedecms ...
- css文本截字,超出文本省略号显示
一.单行文本截字 p { text-overflow: ellipsis;/*显示省略号代替裁剪的文本*/ white-space: nowrap;/*空白处理方式 不换行*/ overflow: h ...
- ERROR: bootstrap checks failed
错误描述:Linux默认配置的参数过小,需要自己设置 max file descriptors [4096] for elasticsearch process is too low, increas ...
- py函数初识
一. 什么是函数 1. 我们到目前为止, 已经可以完成一些软件的基础功能了. 那么我们来完成这样一个功能: 约x print("拿出手机") print("打开陌&quo ...
- 谭浩强C语言第四版第九章课后习题7--9题(建立,输出,删除,插入链表处理)
#include<stdio.h> #include<stdlib.h> #define N sizeof(link) typedef struct stu { struct ...
- 打印N个真值的所有真值组合
例:N=2 (true,true),(false,true),(true,false),(false,false) #include<stdio.h> int count=0; void ...