<?php
/**
- Class Mysql
*/
class Mysql
{
// 数据库连接信息
private $dbconfig = array(
'host' => 'localhost',
'port' => 3306,
'user' => 'root',
'pwd' => '',
'charset' => 'utf8',
'dbname' => 'qioku'
);
// 数据库连接资源
private $link;
// 单例对象应用
private static $instance;
/**
* 构造方法
* 私有化构造方法,防止类在外部被实例化,但可以在类内实例化
*/
private function __construct($params = array())
{
// 初始化属性
$this->initAttr($params);
// 连接数据库
$this->connectServer();
// 设定字符集
$this->setCharset();
// 选择默认数据库
$this->selectDefaultDb();
}
/**
* 获得单例对象的公共接口方法
* @param array $params 数据库连接信息
* @return object 单例的对象
*/
public static function getInstance($params=array())
{
// 判断是否没有实例化过
if (!self::$instance instanceof self){
// 实例化并保存
self::$instance = new self($params);
}
return self::$instance;
}
/**
* 初始化属性
* @param array $params 数据库连接信息
*/
private function initAttr($params)
{
// 初始化属性,使用array_merge()函数合并另个数组
$this->dbconfig = array_merge($this->dbconfig,$params);
}
/**
* 连接目标服务器
*/
private function connectServer()
{
$host = $this->dbconfig['host'];
$port = $this->dbconfig['port'];
$user = $this->dbconfig['user'];
$pwd = $this->dbconfig['pwd'];
// 连接数据库服务器
if ($link = mysqli_connect("$host:$port",$user,$pwd)) {
$this->link = $link;
}else {
die('数据库连接失败!'.mysqli_error());
}
}
/**
* 选择数据库
*/
private function selectDefaultDb()
{
// 判断dbname是否为空,空表示不选择数据库
if ($this->dbconfig['dbname'] == ''){
return;
}
$sql = "use `{$this->dbconfig['dbname']}`";
$this->query($sql);
}
/**
* 设定字符集
*/
private function setCharset()
{
$sql = "set names {$this->dbconfig['charset']}";
$this->query($sql);
}
/**
* 转义字符串
* $data 待转义的字符串
* @return string 转义后的字符串
*/
public function escapeString($data)
{
return mysqli_real_escape_string($data,$this->link);
}
/**
* 执行sql方法
* $sql 待执行的sql语句
*/
public function query($sql)
{
if ($result = mysqli_query($this->link,$sql)){
return $result;
}else{
echo 'SQL执行失败<br>错误的sql语句为:',$sql,'<br>';
echo '错误代码为:',mysqli_errno($this->link),'<br>';
echo '错误信息为:',mysqli_error($this->link),'<br>';
die;
}
}
/**
* 查询单条记录
*/
public function fetchRow($sql)
{
if ($result = $this->query($sql)){
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
return $row;
}else{
return false;
}
}
/**
* 查询多条记录
*/
public static function fetchAll($sql)
{
if ($result = self::query($sql)){
$rows = array();
while($row = mysqli_fetch_array($result,MYSQLI_ASSOC)){
$rows[] = $row;
}
mysqli_free_result($result);
return $rows;
}else{
return false;
}
}
}
使用方法:
<?php
require './mySQLDB.class.php';
$db = mySQLDB::getInstance();
$sql = "select * from dsc_goods where cat_id=1787";
var_dump($db->fetchRow($sql));