dbx_query
(PHP 4 >= 4.0.6, PHP 5 < 5.1.0, PECL dbx >= 1.1.0)
dbx_query — Посылает запрос и извлекает возвращенные строки (если есть)
Описание
Посылает запрос и извлекает возвращенные строки.
Список параметров
-
link_identifier
-
Ссылка на соединение, открытое с помощью dbx_connect()
-
sql_statement
-
SQL запрос.
Данные в запросе должны быть корректно экранированы.
-
flags
-
Параметр
flags
используется для контроля количества возвращаемой информации. Можно использовать любую комбинацию из нижеперечисленных констант, объединенных побитовым ИЛИ (|). Флаги DBX_COLNAMES_* переопределяют настройку dbx.colnames_case в php.ini.-
DBX_RESULT_INDEX
-
Всегда установлена. Возвращенный объект содержит
двумерный индексированный массив data. К примеру,
в выражении
data[2][3]
,2
означает номер строки, а3
номер столбца. Отсчет начинается с индекса [0][0]. Если задана константаDBX_RESULT_ASSOC
, возвращенный объект будет также содержать информацию, относящуюся кDBX_RESULT_INFO
, даже если она не будет задана. -
DBX_RESULT_INFO
- Предоставляет информацию о столбцах. Их имена и типы.
-
DBX_RESULT_ASSOC
-
Позволяет получать доступ к столбцам data по имени.
Элементы ассоциативного массива являются ссылками на соответствующие
элементы индексированного. Так что изменяя
data[0][0]
вы измените иdata[0]['field_name_for_first_column']
. -
DBX_RESULT_UNBUFFERED
- Этот флаг указывает не создавать свойство data. Соответственно, свойство rows изначально будет равно 0. Используйте этот флаг для больших выборок. Для доступа к строкам используйте функцию dbx_fetch_row(). Функция dbx_fetch_row() возвращает строки учитывая все остальные, выставленные для запроса, флаги. Также, каждый успешный вызов этой функции, увеличивает rows на единицу.
-
DBX_COLNAMES_UNCHANGED
- Имена столбцов возвращаются неизменными.
-
DBX_COLNAMES_UPPERCASE
- Имена столбцов преобразуются к верхнему регистру.
-
DBX_COLNAMES_LOWERCASE
- Имена столбцов преобразуются к нижнему регистру.
DBX_RESULT_INDEX
используется всегда, независимо от выставленного параметраflags
. Это значит, что только следующие комбинации имеют смысл:-
DBX_RESULT_INDEX
-
DBX_RESULT_INDEX
|DBX_RESULT_INFO
-
DBX_RESULT_INDEX
|DBX_RESULT_INFO
|DBX_RESULT_ASSOC
- по умолчанию, еслиflags
не задан.
-
Возвращаемые значения
dbx_query() возвращает либо объект, либо 1
в
случае успешного выполнения и 0
в случае ошибки. Объект возвращается
только если sql_statement
является запросом, возвращающим
результирующий набор (т.е. запрос типа SELECT, если он не возвращает пустой набор).
Возвращенный объект содержит четыре, либо пять свойств,
в зависимости от параметра flags
:
- handle
-
Это рабочий обработчик соединения с базой данных, который можно использовать с родными функциями расширения базы данных, в обход dbx.
<?php
$result = dbx_query($link, "SELECT id FROM table");
mysql_field_len($result->handle, 0);
?> - cols и rows
-
Количество столбцов и строк в результирующем наборе соответственно.
<?php
$result = dbx_query($link, 'SELECT id FROM table');
echo $result->rows; // количество строк
echo $result->cols; // количество столбцов
?> - info (опциональный)
-
Заполняется значениями только если константы
DBX_RESULT_INFO
илиDBX_RESULT_ASSOC
переданы в параметрflags
. Представляет из себя двумерный массив, имеющий две строки (name
иtype
), содержащие информацию о столбцах.Пример #1 Вывод всех имен и типов столбцов
<?php
$result = dbx_query($link, 'SELECT id FROM table',
DBX_RESULT_INDEX | DBX_RESULT_INFO);
for ($i = 0; $i < $result->cols; $i++ ) {
echo $result->info['name'][$i] . "\n";
echo $result->info['type'][$i] . "\n";
}
?> - data
-
Это свойство содержит актуальный результирующий набор, возможно, ассоциированный
с именами столбцов в зависимости от значения
flags
. Если заданаDBX_RESULT_ASSOC
, можно обращаться к столбцам по имени -$result->data[2]["field_name"]
.Пример #2 Вывод содержимого свойства data в таблицу HTML
<?php
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');
echo "<table>\n";
foreach ($result->data as $row) {
echo "<tr>\n";
foreach ($row as $field) {
echo "<td>$field</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
?>Пример #3 Как обрабатывать UNBUFFERED запросы
<?php
$result = dbx_query ($link, 'SELECT id, parentid, description FROM table', DBX_RESULT_UNBUFFERED);
echo "<table>\n";
while ($row = dbx_fetch_row($result)) {
echo "<tr>\n";
foreach ($row as $field) {
echo "<td>$field</td>";
}
echo "</tr>\n";
}
echo "</table>\n";
?>
Примеры
Пример #4 Как обрабатывать возвращенное значение
<?php
$link = dbx_connect(DBX_ODBC, "", "db", "username", "password")
or die("Не получилось подключиться");
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');
if (is_object($result) ) {
// ... сделайте кое-что здесь, смотрите подробные примеры ниже ...
// во-первых, выведите имена и типы полей
// затем нарисуйте таблицу, заполненную возвращенными значениями полей
} else {
exit("Запрос не выполнен");
}
dbx_close($link);
?>
Примечания
Замечание:
Всегда внимательно изучайте документацию модуля для используемой базы данных.
Имена столбцов Oracle возвращаются в нижнем регистре.
Смотрите также
- dbx_escape_string() - Экранирует строку таким образом, что ее можно безопасно использовать для запроса
- dbx_fetch_row() - Извлекает строки из результата запроса, для которого был задан флаг DBX_RESULT_UNBUFFERED
- dbx_connect() - Открывает соединение/базу данных