(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
DBX_RESULT_ASSOC
, возвращенный
объект будет также содержать информацию, относящуюся к
DBX_RESULT_INFO
, даже если она не будет задана.
DBX_RESULT_INFO
DBX_RESULT_ASSOC
DBX_RESULT_UNBUFFERED
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
:
Это рабочий обработчик соединения с базой данных, который можно использовать с родными функциями расширения базы данных, в обход dbx.
<?php
$result = dbx_query($link, "SELECT id FROM table");
mysql_field_len($result->handle, 0);
?>
Количество столбцов и строк в результирующем наборе соответственно.
<?php
$result = dbx_query($link, 'SELECT id FROM table');
echo $result->rows; // количество строк
echo $result->cols; // количество столбцов
?>
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";
}
?>
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 возвращаются в нижнем регистре.