<?php
//case 31 数据库操作类
//类
class mysqldb
{
//私有 配置数组
private $db_config = array(
'host'=>'localhost',
'port'=>'3306',
'user'=>'root',
'pwd'=>'mysql123',
'charset'=>'utf8',
'dbname'=>'test',
);
//私有,数据库连接资源id
private $link;
//静态实例化变量
private static $instance;
/**
* @param $params
*/
//私有,初始化配置数组
private function initAttr($params)
{
$this->db_config = array_merge($this->db_config,$params);
}
/**
*
*/
//私有,连接数据库
private function connectServer()
{
$host = $this->db_config['host'];
$port = $this->db_config['port'];
$user = $this->db_config['user'];
$pwd = $this->db_config['pwd'];
$dbname = $this->db_config['dbname'];
if ($link = mysqli_connect("$host:$port","$user","$pwd","$dbname"))
{
$this->link = $link;
}
else
{
die('数据库连接失败'.mysqli_error($this->link));
}
}
/**
*
*/
//私有,设置数据库字符集
private function setCharset()
{
$sql = "set names {$this->db_config['charset']}";
$this->query($sql);
//mysqli_query($this->link,$sql);
}
/**
* @return bool
*/
//私有,选择具体数据库
private function selectDefaultDb()
{
if($this->db_config['dbname'] == '')
{
return false;
}
$sql = "use {$this->db_config['dbname']}";
$this->query($sql);
//mysqli_query($this->link,$sql);
}
/**
* mysqldb constructor.
* @param array $params
*
*/
//构造函数
private function __construct($params = array())
{
$this->initAttr($params);
$this->connectServer();
$this->setCharset();
$this->selectDefaultDb();
}
/**
* @param $sql
* @return bool|mysqli_result
*/
//执行查询
public function query($sql)
{
if($result = mysqli_query($this->link,$sql))
{
return $result;
}
else
{
echo 'SQL执行失败:<br>';
echo '错误的SQL为'.$sql.'<br>';
echo '错误的代码为:',mysqli_errno($this->link),'<br>';
echo '错误的信息为:',mysqli_error($this->link),'<br>';
die();
}
}
/**
* @param $sql
* @return array|bool|null
*/
//取单行数据
public function fetchRow($sql)
{
if($result = $this->query($sql))
{
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
return $row;
}
else
{
return false;
}
}
/**
* @param $sql
* @return array|bool
*/
//取多行数据
public function fetchAll($sql)
{
if($result = $this->query($sql))
{
$rows = array();
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC))
{
$rows[] = $row;
}
mysqli_free_result($result);
return $rows;
}
else
{
return false;
}
}
/**
* @param $data
* @return string
*/
//转义字符,防止sql注入
public function escapeString($data)
{
return mysqli_real_escape_string($this->link,$data);
}
/**
* @param array $params
* @return mysqldb
*/
//静态方法,获取唯一的数据库实例
public static function getInstance($params=array())
{
if(!self::$instance instanceof self)
{
self::$instance = new self($params);
}
return self::$instance;
}
//克隆类的方法
public function __clone()
{
die('禁止复制此类');
}
}