/** * Функция осуществляет разбор массива подстановки и выполняет запрос * @param string $SQL Запрос * @param array|bool $array Массив для постановки, * для совместимости может принять сразу лог * @param bool $log Режим лога: SQL_LOG — пишем, * но не выводим, _FORCE — пишем и выводим всегда, * _BLOCK — блокируем запись, но если будет ошибка — * все равно выведется в консоль, но вместо запроса * будет фраза о блокировке */ function query($SQL, $array = array(), $log = SQL_LOG) { $time = $this->time(); $deprecated = false; $stack = is_callable("cmsBacktrace") ? "\n" . cmsBacktrace(CMSBACKTRACE_RAW) : "Функция cmsBacktrace еще не зарегистрирована."; // Раньше не было массивов, поэтому сейчас // для обратной совместимости массив можно не указывать // backward compatibility — DEPRECATED!!! if (!is_array($array)) { $deprecated = true; $log = $array; $array = array(); } $SQL = $this->prepare($SQL, $array); $SQLlog = $log !== SQL_LOG_BLOCK ? $SQL : "Запись запроса заблокирована через LOG_BLOCK."; // exec $r = @mysql_query($SQL, $this->_connection); // suppress or not suppress ;) $this->_queries++; $this->_lastQuery = $SQLlog; $this->log($SQLlog, SQL_TYPE_QUERY, $log); if ($deprecated) { $this->log("Функция была вызвана со старым набором" . "параметров (без массива).{$stack}", SQL_TYPE_WARNING, SQL_LOG_FORCE); } // этот ворнинг полюбому идет в лог if ($this->error()) { $r = false; $this->log($this->error() . $stack, SQL_TYPE_ERROR, SQL_LOG_FORCE); // ошибки в лог идут вне зависимости от параметра } $time = $this->time() - $time; $this->_queryTime += $time; $this->_execTime += $time; return $r; }
/** * Функция осуществляет разбор массива подстановки и выполняет запрос * @param string $SQL Запрос * @param array|bool $array Массив для постановки, * для совместимости может принять сразу лог * @param bool $log Режим лога: SQL_LOG — пишем, * но не выводим, _FORCE — пишем и выводим всегда, * _BLOCK — блокируем запись, но если будет ошибка — * все равно выведется в консоль, но вместо запроса * будет фраза о блокировке * @return bool */ function query($SQL, $array = array(), $log = SQL_LOG) { $time = $this->time(); $stack = is_callable("cmsBacktrace") ? "\n" . cmsBacktrace(CMSBACKTRACE_RAW) : "Функция cmsBacktrace еще не зарегистрирована."; $SQL = $this->prepare($SQL, $array); $SQLlog = $log !== SQL_LOG_BLOCK ? $SQL : "Запись запроса заблокирована через LOG_BLOCK."; // exec $r = $this->_statement->execute(); $this->_affected = $this->_statement->rowCount(); // suppress or not suppress ;) $this->_queries++; $this->_lastQuery = $SQLlog; $this->log($SQLlog, SQL_TYPE_QUERY, $log); if (!$r) { $this->log($this->error() . $stack, SQL_TYPE_ERROR, SQL_LOG_FORCE); // ошибки в лог идут вне зависимости от параметра } $time = $this->time() - $time; $this->_queryTime += $time; $this->_execTime += $time; return $r; }