db_query_temporary

Хочешь помочь с переводом? Это очень просто и быстро. Лишь зарегистрируйся, и можешь тут же начать переводить.

includes/database.mysql.inc, строка 276

Версии
5 – 6
db_query_temporary($query)

Выполняет SELECT-запрос к активной базе данных и сохраняет результат во временной таблице.

Эту функцию следует использовать вместо db_query(), когда результат запроса должен быть сохранён во временную таблицу. Временные таблицы существуют только во время запроса страницы. Аргументы к запросу, подставленные пользователем, должны быть переданы как отдельные параметры — в этом случае они смогут быть правильно экранированы во избежании атак через SQL-инъекции.

Следует помнить, что при необходимости узнать количество возвращённых строк результата, необходимо выполнить запрос SELECT COUNT(*) из временной таблицы. db_affected_rows() не даёт постоянного результата на разных типах баз данных в данной ситуации.

Примечание: использование этого синтаксиса приведет к тому, что NULL и FALSE будут превращаться в десятичный 0, а TRUE — в десятичную 1.

Параметры

$query Строка, содержащая SELECT SQL-запрос.

... Переменное количество аргументов, которые подставляются в запрос по типу printf(). Вместо переменного количества аргументов, можно использовать один массив, содержащий необходимые аргументы. Правильные шаблоны для подстановки: '%s', '%d', '%f', '%b' (двоичные данные, не следует помещать в кавычки '') и '%%'.

$table Имя временной таблицы, в которую необходимо поместить результат. К имени таблицы префикс не добавляется, т.к. нет риска коллизии имён.

Возвращаемое значение

Результирующий ресурс запроса, или FALSE, если запрос вызвал ошибку.

Связанные темы

Код

<?php
function db_query_temporary($query) {
  $args = func_get_args();
  $tablename = array_pop($args);
  array_shift($args);

  $query = preg_replace('/^SELECT/i', 'CREATE TEMPORARY TABLE '. $tablename .' Engine=HEAP SELECT', db_prefix_tables($query));
  if (isset($args[0]) and is_array($args[0])) { // 'All arguments in one array' syntax
    $args = $args[0];
  }
  _db_query_callback($args, TRUE);
  $query = preg_replace_callback(DB_QUERY_REGEXP, '_db_query_callback', $query);
  return _db_query($query);
}
?>
Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Вход в систему