封装数据库mysql, mysqli
<?php
header("content-type:text/html;charset=utf-8");
class db{
//私有的静态属性
private static $dbcon = false ;
//私有的构造方法
private function __construct($dbname){
$dbcon = @mysql_connect('127.0.0.1', 'root', 'root');
mysql_select_db($dbname, $dbcon) or die("mysql connect error");
mysql_query("set names utf8", $dbcon);
}
//私有的克隆方法
private function __clone(){}
//公共的静态方法, 数据库连接对象
public static function getInstance($dbname){
if(self::$dbcon == false){
self::$dbcon = new self($dbname);
}
return self::$dbcon;
}
/**
* 执行语句
* @param $sql
* @return source
*/
public function query($sql){
return mysql_query($sql);
}
/**
* 查询某个字段, 例如 select count(*), select username
* @param $sql
* @return string or int
*/
public function getOne($sql){
$query = $this->query($sql);
return mysql_result($query, 0);
}
/**
* 获取一行记录
* @param $sql
* @return array 一维
*/
public function getRow($sql, $type='assoc'){
$query = $this->query($sql);
if(!in_array($type, array("assoc", "array", "row"))){
die("mysql_query error");
}
$functionname = "mysql_fetch_".$type;
return $functionname($query);
}
/**
* 前置条件:通过资源获取一条记录
* @param $query source
* @return array 一维
*/
public function getRowFromSource($query, $type="assoc"){
if(!in_array($type, array("assoc", "array", "row"))){
die("mysql_query error");
}
$functionname = "mysql_fetch_".$type;
return $functionname($query);
}
/**
* 获取所有记录
* @param $sql
* @return array 二维
*/
public function getAll($sql){
$query = $this->query($sql);
$list = array();
while ($row = $this->getRowFromSource($query)) {
$list[] = $row;
}
return $list;
}
/*
* 新增数据方法
* @param1 $table, $data 表名 数据
* @return 上一次增加操做产生ID值
*/
public function insert($table, $data){
//遍历数组,得到每一个字段和字段的值
$kstr = '' ;
$vstr = '' ;
foreach ($data as $key => $val) {
//$key是字段名, $val是对应的值
$kstr .= $key."," ;
$vstr .= "'$val',";
}
$kstr = rtrim($kstr, ',');
$vstr = rtrim($vstr, ',');
//添加的sql语句
$sql = "insert into $table ($kstr) values ($vstr)";
//执行
$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 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();
}
/*
* 修改数据方法
* @param1 $table,$data,$where 表名 数据 条件
* @return 受影响的行数
*/
public function update($table,$data,$where){
//遍历数组,得到每一个字段和字段的值
$str='';
if(is_array($data)){
foreach($data as $key=>$v){
$str.="$key='$v',";
}
$str=rtrim($str,',');
//修改的SQL语句
$sql="update $table set $str where $where";
} else {
//修改的SQL语句
$sql="update $table set $data where $where";
}
$this->query($sql);
//返回受影响的行数
return mysql_affected_rows();
}
/**
* 获取刚插入数据的id
* @return int
*/
public function getInsertId(){
return mysql_insert_id();
}
/**
* print_r 打印数据
*/
public function p($arr){
echo "<pre>";
print_r($arr);
echo "</pre>";
}
/**
* var_dump 打印数据
*/
public function v($arr){
echo "<pre>";
var_dump($arr);
echo "</pre>";
}
}
// $dbname = 'yii2_project';
// $db = db::getInstance($dbname);
// // where article_id=1
// // $sql = "select * from article";
// // $arr = $db->getAll($sql);
// $db->p($db);
************* mysqli ************
<?php
//header
header('content-type:text/html;charset=UTF-8');
class DB {
//定义属性
private $host;//主机名
private $port;//端口号
private $name;//用户名
private $pass;//密码
private $dbname;//数据库名
private $charset;//设置字符集
private $link;//连接数据库
private static $instance;
//初始化 构造函数
private function __construct($arr = array()){
$this->host = isset($arr['host']) ? $arr['host'] : 'localhost' ;
$this->port = isset($arr['port']) ? $arr['port'] : '3306' ;
$this->name = isset($arr['name']) ? $arr['name'] : 'root' ;
$this->pass = isset($arr['pass']) ? $arr['pass'] : 'root' ;
$this->dbname = isset($arr['dbname']) ? $arr['dbname'] : 'yii2_project' ;
$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->name, $this->pass);
//连接失败
if(!$this->link){
echo '数据库连接失败<br>';
echo '错误编码是:'.mysqli_errno($this->link).'<br>';
echo '错误信息是:'.mysqli_error($this->link).'<br>';
exit;
}
}
//选择数据库
private function db_usedb(){
mysqli_query($this->link, "use {$this->dbname}");
}
//设置字符集
private function db_charset(){
mysqli_query($this->link, "set names {$this->charset}");
}
//私有化克隆函数,防止外界克隆对象
private function __clone()
{
}
//单例访问统一入口
public static function getInstance($arr)
{
if(!(self::$instance instanceof self))
{
self::$instance = new self($arr);
}
return self::$instance;
}
/**
* 执行语句
* @param $sql
* @return source
*/
private 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>';
exit;
}
return $res;//成功返回数据
}
/**
* 获取刚插入数据的id
* @return int
*/
public function getInsertId(){
return mysqli_insert_id($this->link);
}
/**
* 查询某个字段, 例如 select count(*), select username
* @param $sql
* @return string or int
*/
public function getOne($sql){
$query = $this->query($sql);
return mysqli_free_result($query);
}
/**
* 获取一行记录
* @param $sql
* @return array 一维
*/
public function getRow($sql, $type='assoc'){
$query = $this->query($sql);
if(!in_array($type, array("assoc", "array", "row"))){
die("mysql_query error");
}
$functionname = "mysqli_fetch_".$type;
return $functionname($query);
}
/**
* 前置条件:通过资源获取一条记录
* @param $query source
* @return array 一维
*/
public function getRowFromSource($query, $type="assoc"){
if(!in_array($type, array("assoc", "array", "row"))){
die("mysql_query error");
}
$functionname = "mysqli_fetch_".$type;
return $functionname($query);
}
/**
* 获取所有记录
* @param $sql
* @return array 二维
*/
public function getAll($sql){
$query = $this->query($sql);
$list = array();
while ($row = $this->getRowFromSource($query)) {
$list[] = $row;
}
return $list;
}
/*
* 新增数据方法
* @param1 $table, $data 表名 数据
* @return 上一次增加操做产生ID值
*/
public function insert($table, $data){
//遍历数组,得到每一个字段和字段的值
$kstr = '' ;
$vstr = '' ;
foreach ($data as $key => $val) {
//$key是字段名, $val是对应的值
$kstr .= $key."," ;
$vstr .= "'$val',";
}
$kstr = rtrim($kstr, ',');
$vstr = rtrim($vstr, ',');
//添加的sql语句
$sql = "insert into $table ($kstr) values ($vstr)";
//执行
$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);
}
/*
* 修改数据方法
* @param1 $table,$data,$where 表名 数据 条件
* @return 受影响的行数
*/
public function update($table,$data,$where){
//遍历数组,得到每一个字段和字段的值
$str='';
if(is_array($data)){
foreach($data as $key=>$v){
$str.="$key='$v',";
}
$str=rtrim($str,',');
//修改的SQL语句
$sql="update $table set $str where $where";
} else {
//修改的SQL语句
$sql="update $table set $data where $where";
}
$this->query($sql);
//返回受影响的行数
return mysqli_affected_rows($this->link);
}
}
//$db = DB::getInstance(array('dbname'=>'yii2'));
封装数据库mysql, mysqli的更多相关文章
- php封装数据库mysql, mysqli
<?php header("content-type:text/html;charset=utf-8"); class db{ //私有的静态属性 private ...
- php 通过mysqli 操作数据库mysql
目录 php mysqli 操作数据库 连接数据库 通过mysqli 创建数据库 通过mysqi 创建数据表 通过mysqli向数据表中插入信息 通过mysqli 读取数据 where语句的应用 通过 ...
- PHP学习(四)---PHP与数据库MySql
主要有以下的内容: 1.怎么连接数据库 2.怎么操作数据库 (1)怎么执行sql语言 (2)怎么处理返回的结果集 方法一:面向过程(已经过时,只是了解) 假设: $username=your_name ...
- PHP封装数据库
(1)按照步骤封装数据库 ①引入抽象类和抽象方法,即引入模板: ②继承抽象类,注意参数(规定几个就传入几个): ③逐个写入抽象方法,必须一一对应:(抽象方法必须一一引入,否则会报错-->有个抽象 ...
- C#简单构架之EF进行读写分离+多数据库(Mysql/SqlService)
最近因为项目需要,研究了下EF的读写分离,所以做了一个demo进行测试,下面是项目的结构 表现层view 主要提供Web.WebApi等表现层的解决方案 公共层public 主要提供项目公共类库,数据 ...
- Flink RichSourceFunction应用,读关系型数据(mysql)数据写入关系型数据库(mysql)
1. 写在前面 Flink被誉为第四代大数据计算引擎组件,即可以用作基于离线分布式计算,也可以应用于实时计算.Flink的核心是转化为流进行计算.Flink三个核心:Source,Transforma ...
- 数据库MySQL之 视图、触发器、存储过程、函数、事务、数据库锁、数据库备份、事件
数据库MySQL之 视图.触发器.存储过程.函数.事务.数据库锁.数据库备份.事件 浏览目录 视图 触发器 存储过程 函数 事务 数据库锁 数据库备份 事件 一.视图 1.视图概念 视图是一个虚拟表, ...
- MYSQL添加新用户 MYSQL为用户创建数据库 MYSQL为新用户分配权限
1.新建用户 //登录MYSQL @>mysql -u root -p @>密码 //创建用户 mysql> insert into mysql.user(Host,User,Pas ...
- Robot Framework-DatabaseLibrary数据库(MySql)
Robot Framework-Mac版本安装 Robot Framework-Windows版本安装 Robot Framework-工具简介及入门使用 Robot Framework-Databa ...
随机推荐
- Qt之QRadioButton
简述 QRadioButton部件提供了一个带有文本标签的单选框(单选按钮). QRadioButton是一个可以切换选中(checked)或未选中(unchecked)状态的选项按钮.单选框通常呈现 ...
- Android res/目录下子目录详解
Directory Resource Type animator/ XML files that define property animations. anim/ XML files that de ...
- SAP客户标准信用额度修改和创建
好吧,前提要说一下,信贷是到客户的信贷范围级别的. FUNCTION zfm_credit. *"---------------------------------------------- ...
- PHP可变长函数方法介绍
1.三个重要函数 func_num_args() 返回实参个数 func_get_arg(i) 返回某个实参的值 func_get_args() 以数组的形式返回实参 ...
- Go运行环境搭建(Mac\Linux)
转载:http://blog.csdn.net/nellson/article/details/51523159 1. 下载安装文件 http://www.golangtc.com/download ...
- shell中的数组
在shell脚本中,除了通常使用的shell变量外,有时也需要复杂的数据结构去实现一些功能,这里简单说明一下shell数组的使用方法: 初始化方法 _array_name[0]="rando ...
- bzoj3594: [Scoi2014]方伯伯的玉米田
dp新优化姿势... 首先,当我们拔高时,一定右端点是n最优.因为如果右端点是r,相当于降低了r之后玉米的高度.显然n更优. 那么可以dp.dp[i][j]表示前i个拔高j次的LIS.dp[i][j] ...
- 用Navicat for MYsql创建表,插入中文显乱码
段都有编码设置.出现乱码肯定是你现在用的编码混乱造成的 解决办法: 第一步 先改数据库编码 先修改你的数据库,如果你页面用的是UTF-8编码那么你数据库内的编码也需要设置为UTF-8,每个字段都需要设 ...
- win7 MS SQL SERVER 2000安装
http://blog.chinaunix.net/uid-24398518-id-2156226.html MicrosoftInternetExplorer402DocumentNotSpecif ...
- Oracle中varchar,varchar2,nvarchar,nvarchar2的区别
--varchar,varchar2 联系:1.varchar/varchar2用于存储可变长度的字符串比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个字节 ...