前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Yaf框架封装的MySQL数据库操作示例

Yaf框架封装的MySQL数据库操作示例

作者头像
砸漏
发布2020-10-29 10:29:36
1.1K0
发布2020-10-29 10:29:36
举报
文章被收录于专栏:恩蓝脚本

本文实例讲述了Yaf框架封装的MySQL数据库操作。分享给大家供大家参考,具体如下:

Yaf封装DB简单操作

介绍

因为Yaf是一个纯天然的MVC阔架,本人还在贝锐的时候就和主管一起用Yaf框架去重构了向日葵的网站端,到后面,Yaf也逐渐应用到了其他项目上,但是Yaf是没有带DB类库的,所以本人也共享下最近封装的代码!

代码

使用PDO封装MySQL操作

代码语言:javascript
复制
class Db_Mysql
{
private $_options = array();
private $db;
private $statement;
private $_fetchMode = 2;
/**
* 构造函数
*
* @param string $host
* @param string $username
* @param string $password
* @param string $dbname
* @param string $charset
*/
private function __construct($host, $username, $password, $dbname, $charset)
{
//初始化数据连接
try {
$dns = 'mysql:dbname=' . $dbname . ';host=' . $host;
$this- db = new PDO($dns, $username, $password, array(PDO::ATTR_PERSISTENT =  true, PDO::ATTR_AUTOCOMMIT =  1));
$this- db- query('SET NAMES ' . $charset);
} catch (PDOException $e) {
echo header("Content-type: text/html; charset=utf-8");
echo '<pre / ';
echo '<b Connection failed:</b ' . $e- getMessage();
die;
}
}
/**
* 调用初始化MYSQL连接
*
* @param string $config
* @return Aomp_Db_Mysql
*/
static public function getInstance($config = '')
{
$host = $config- host;
$username = $config- username;
$password = $config- password;
$dbname = $config- dbname;
$charset = $config- charset;
$db = new self($host, $username, $password, $dbname, $charset);
return $db;
}
/**
* 获取多条数据
*
* @param string $sql
* @param array $bind
* @param string $fetchMode
* @return multitype:
*/
public function fetchAll($sql, $bind = array(), $fetchMode = null)
{
if($fetchMode === NULL){
$fetchMode = $this- _fetchMode;
}
$stmt = $this- query($sql, $bind);
$res = $stmt- fetchAll($fetchMode);
return $res;
}
/**
* 获取单条数据
*
* @param string $sql
* @param array $bind
* @param string $fetchMode
* @return mixed
*/
public function fetchRow($sql, array $bind = array(), $fetchMode = null)
{
if ($fetchMode === null) {
$fetchMode = $this- _fetchMode;
}
$stmt = $this- query($sql, $bind);
$result = $stmt- fetch($fetchMode);
return $result;
}
/**
* 获取统计或者ID
*
* @param string $sql
* @param array $bind
* @return string
*/
public function fetchOne($sql, array $bind = array())
{
$stmt = $this- query($sql, $bind);
$res = $stmt- fetchColumn(0);
return $res;
}
/**
* 增加
*
* @param string $table
* @param array $bind
* @return number
*/
public function insert($table, array $bind)
{
$cols = array();
$vals = array();
foreach ($bind as $k =  $v) {
$cols[] = '`' . $k . '`';
$vals[] = ':' . $k;
unset($bind[$k]);
$bind[':' . $k] = $v;
}
$sql = 'INSERT INTO '
. $table
. ' (' . implode(',', $cols) . ') '
. 'VALUES (' . implode(',', $vals) . ')';
$stmt = $this- query($sql, $bind);
$res = $stmt- rowCount();
return $res;
}
/**
* 删除
*
* @param string $table
* @param string $where
* @return boolean
*/
public function delete($table, $where = '')
{
$where = $this- _whereExpr($where);
$sql = 'DELETE FROM '
. $table
. ($where ? ' WHERE ' .$where : '');
$stmt = $this- query($sql);
$res = $stmt- rowCount();
return $res;
}
/**
* 修改
*
* @param string $table
* @param array $bind
* @param string $where
* @return boolean
*/
public function update($table, array $bind, $where = '')
{
$set = array();
foreach ($bind as $k =  $v) {
$bind[':' . $k] = $v;
$v = ':' . $k;
$set[] = $k . ' = ' . $v;
unset($bind[$k]);
}
$where = $this- _whereExpr($where);
$sql = 'UPDATE '
. $table
. ' SET ' . implode(',', $set)
. (($where) ? ' WHERE ' . $where : '');
$stmt = $this- query($sql, $bind);
$res = $stmt- rowCount();
return $res;
}
/**
* 获取新增ID
*
* @param string $tableName
* @param string $primaryKey
* @return string
*/
public function lastInsertId()
{
return (string) $this- db- lastInsertId();
}
public function query($sql, $bind = array())
{
if(!is_array($bind)){
$bind = array($bind);
}
$stmt = $this- prepare($sql);
$stmt- execute($bind);
$stmt- setFetchMode($this- _fetchMode);
return $stmt;
}
public function prepare($sql = '')
{
if(empty($sql)){
return false;
}
$this- statement = $this- db- prepare($sql);
return $this- statement;
}
public function execute($param = '')
{
if(is_array($param)){
try {
return $this- statement- execute($param);
} catch (Exception $e) {
return $e- getMessage();
}
}else {
try {
return $this- statement- execute();
} catch (Exception $e) {
return $e- getMessage();
}
}
}
/**
*
* @param string $where
* @return null|string
*/
protected function _whereExpr($where)
{
if(empty($where)){
return $where;
}
if(!is_array($where)){
$where = array($where);
}
$where = implode(' AND ', $where);
return $where;
}
/**
* 关闭数据库操作
*/
public function close()
{
$this- _db = null;
}
}

配置

代码语言:javascript
复制
db.type = 'mysql'
db.host = '127.0.0.1'
db.username = 'root'
db.password = '123456'
db.dbname = 'test'
db.charset = 'UTF8'

调用方法

代码语言:javascript
复制
class TestController extends Yaf_Controller_Abstract
{
public function indexAction()
{
$config = Yaf_Application::app()- getConfig()- db;
$db = Db_Mysql::getInstance($config);
$row = $db- fetchOne('select count(*) from `user`');
print_r($row);die;
}
}

结果

更多关于php框架相关内容感兴趣的读者可查看本站专题:《php优秀开发框架总结》、《codeigniter入门教程》、《ThinkPHP入门教程》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-09-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档