Пример #1
0
 /**
  * 	Функция осуществляет разбор массива подстановки и выполняет запрос
  * 	@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;
 }
Пример #2
0
 /**
  * 	Функция осуществляет разбор массива подстановки и выполняет запрос
  * 	@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;
 }