Пример #1
0
 /**
  * 事务查询
  * @param string $sql
  */
 protected function _query($sql)
 {
     try {
         if ($this->db_driver->query($sql, null, true)) {
             $status = true;
         } else {
             $status = false;
         }
     } catch (Exception $e) {
         $status = false;
     }
     return $status;
 }
Пример #2
0
 /**
  * 执行SQL查询
  *
  * @param string $sql
  * @param boolean $as_object 返回对象名称 默认false,即返回数组
  * @param boolean $use_master 是否使用主数据库,不设置则自动判断,对更新的SQL无效
  * @return Database_Driver_MySQLI_Result
  */
 public function query($sql, $as_object = false, $use_master = null)
 {
     if (null === $use_master && true === $this->is_auto_use_master) {
         $use_master = true;
     }
     static $slow_query_mtime = null;
     if (null === $slow_query_mtime) {
         if (IS_CLI) {
             $slow_query_mtime = false;
         } else {
             $slow_query_mtime = (int) Core::config('core.slow_query_mtime');
         }
     }
     if ($slow_query_mtime > 0) {
         $stime = microtime(1);
     }
     $rs = $this->driver->query($sql, $as_object, $use_master);
     if ($slow_query_mtime > 0) {
         $etime = microtime(1);
         $time = 1000 * ($etime - $stime);
         if ($time > $slow_query_mtime) {
             // 记录慢查询
             Database::$slow_querys[] = array((int) $stime, $time, $this->driver->last_query());
         }
     }
     return $rs;
 }
Пример #3
0
 /**
  * 执行SQL查询
  *
  * @param string $sql
  * @param boolean $as_object 返回对象名称 默认false,即返回数组
  * @param boolean $use_master 是否使用主数据库,不设置则自动判断,对更新的SQL无效
  * @return \Database_Driver_MySQLI_Result
  */
 public function query($sql, $as_object = false, $use_master = null)
 {
     if (null === $use_master && true === $this->is_auto_use_master) {
         $use_master = true;
     }
     return $this->driver->query($sql, $as_object, $use_master);
 }
Пример #4
0
 /**
  * 执行SQL查询
  *
  * [!!] 此方法的SQL语句将不进行SQL注入过滤,执行语句请慎重,建议通过数据库的QueryBuilder来构造SQL语句,如果此方法无法满足要求也只用 `$db->execute()` 方法
  *
  *      $db->query('select * from my_table where id = 10');
  *
  * @param string $sql
  * @param boolean $as_object 返回对象名称 默认false,即返回数组
  * @param boolean $use_master 是否使用主数据库,不设置则自动判断,对更新的SQL无效
  * @return Database_Driver_MySQLI_Result
  */
 public function query($sql, $as_object = false, $use_master = null)
 {
     if (null === $use_master && true === $this->is_auto_use_master) {
         $use_master = true;
     }
     $time = $this->_start_slow_query();
     $rs = $this->driver->query($sql, $as_object, $use_master);
     if (false !== $time) {
         $this->_record_slow_query($time);
     }
     return $rs;
 }