• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Yaf框架封装的MySQL数据库操作示例

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

    Yaf封装DB简单操作

    介绍

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

    代码

    使用PDO封装MySQL操作

    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;
      }
    }
    
    

    配置

    db.type = 'mysql'
    db.host = '127.0.0.1'
    db.username = 'root'
    db.password = '123456'
    db.dbname = 'test'
    db.charset = 'UTF8'
    
    

    调用方法

    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程序设计有所帮助。

    您可能感兴趣的文章:
    • Can''t connect to local MySQL through socket ''/tmp/mysql.sock''解决方法
    • Mysql常用函数大全(分类汇总讲解)
    • 利用MySQL主从配置实现读写分离减轻数据库压力
    • mysql+spring+mybatis实现数据库读写分离的代码配置
    • 如何彻底删除mysql服务(清理注册表)详解
    • MySQL压缩版zip安装问题的解决方法
    • Golang中如何对MySQL进行操作详解
    • 将图片储存在MySQL数据库中的几种方法
    • MySQL存储文本和图片的方法
    • mysql实现sequence功能的代码
    上一篇:PHP实现的敏感词过滤方法示例
    下一篇:浅谈PHP封装CURL
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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