daomysqli.class.php,DAOMySQLi工具类

//使用三私一公的单例模式实现DAOMySQLi工具类

class DAOMySQLi

{

private $host;

private $user;

private $pass;

private $dbname;

private $port;

//保存mysqli对象

private $MySQLi;

//一个私有静态属性

private static $instance;

//私有构造方法

private function __construct($options)

{

$this->host = $options['host'];

$this->user = $options['user'];

$this->pass = $options['pass'];

$this->dbname = $options['dbname'];

$this->port = $options['port'];

$this->MySQLi = new MySQLi($this->host,$this->user,$this->pass,$this->dbname,$this->port);

//设置字符集

$this->MySQLi->query('SET NAMES UTF8;');

}

//私有克隆方法

private function __clone(){}

//公有方法

public static function getSingleton($options)

{

//判断一下实例化的对象是否为这个类的

if(!self::$instance instanceof self)

{

self::$instance = new self($options);

}

return self::$instance;

}

//查询所有语句

public function fetchAll($sql)

{

//执行语句

$res = $this->MySQLi->query($sql);

if($res)

{

$rows = [];

while($row = $res->fetch_assoc())

{

$rows[] = $row;

}

//清空结果集

$res->free();

return $rows;

}

else

{

//说明sql语句有误

echo 'SQL语句有误,详细信息如下:
'.$this-> MySQLi -> error;

exit();

}

}

//查询一条语句

public function fetchOne($sql)

{

//执行语句

$res = $this->MySQLi->query($sql);

if($res)

{

$row = $res->fetch_assoc();

$res->free();

return $row;

}

else

{

//说明sql语句有误

echo 'SQL语句误,详细信息如下:
'.$this-> MySQLi -> error;

exit();

}

}

//DML(删除,添加,修改)语句

public function DML($sql)

{

$res = $this->MySQLi->query($sql);

if($res)

{

$affected_rows = $this->MySQLi->affected_rows;

if($affected_rows>0)

{

return true;

}

else

{

return false;

}

}

else

{

//说明sql语句有误

echo 'SQL语句有误,详细信息如下:
'.$this-> MySQLi -> error;

exit();

}

}

}

总结:使用单例模式使连接数据库的对象不能重复实例化,提高效率。通过将sql语句封装到类的方法中在外实例化后,可以调用该方法,来执行,大大减少代码。

下面给出查询语句调用示意代码,其他基本类似。

require_once './hw_DAOMySQLi.php';

$options=[

'host'=>'localhost',

'user'=>'root',

'pass'=>'wasd',

'dbname'=>'stu',

'port'=>3306

];

$MySQLi = DAOMySQLi::getSingleton($options);

//sql查询

$sql = "SELECT * FROM grade;";

$rows = $MySQLi->fetchAll($sql);

include_once './stu_lst.html';

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值