mysql mysqli封装_封装数据库mysql, mysqli

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 "

";

print_r($arr);

echo "

";

}

/**

* var_dump 打印数据

*/

public function v($arr){

echo "

";

var_dump($arr);

echo "

";

}

}

// $dbname = 'yii2_project';

// $db = db::getInstance($dbname);

// // where article_id=1

// // $sql = "select * from article";

// // $arr = $db->getAll($sql);

// $db->p($db);

*************  mysqli  ************

//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 '数据库连接失败
';

echo '错误编码是:'.mysqli_errno($this->link).'
';

echo '错误信息是:'.mysqli_error($this->link).'
';

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语句有错误
';

echo '错误编码是:'.mysqli_errno($this->link).'
';

echo '错误信息是:'.mysqli_error($this->link).'
';

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'));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值