(PHP 4 >= 4.0.6, PHP 5 <= 5.0.5, 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";
?>
Версия | Описание |
---|---|
5.0.0 |
Добавлена константа DBX_RESULT_UNBUFFERED .
|
4.3.0 |
Добавлены константы DBX_COLNAMES_UNCHANGED ,
DBX_COLNAMES_UPPERCASE и
DBX_COLNAMES_LOWERCASE .
|
Пример #4 Как обрабатывать возвращенное значение
<?php
$link = dbx_connect(DBX_ODBC, "", "db", "username", "password")
or die("Could not connect");
$result = dbx_query($link, 'SELECT id, parentid, description FROM table');
if (is_object($result) ) {
// ... do some stuff here, see detailed examples below ...
// first, print out field names and types
// then, draw a table filled with the returned field values
} else {
exit("Query failed");
}
dbx_close($link);
?>
Замечание:
Всегда внимательно изучайте документацию по расширению для используемой базы данных.
Имена столбцов Oracle возвращаются в нижнем регистре.