/** * 事务查询 * @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; }
/** * 执行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; }
/** * 执行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); }
/** * 执行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; }