Выполнить запрос
Назначение
Функция dbx_query
передаёт SQL-запрос на выполнение и получает все результаты его обработки (если имеются).
Синтаксические правила
object dbx_query (идентификатор, запрос[, флаги]);
-
Идентификатор
-
Идентификатор ранее установленного соединения с БД.
-
Запрос
-
Текст SQL-запроса.
-
Флаги
-
Флаги управления возвращаемой информацией. Может быть любая комбинация следующих констант с битовой операцией
OR (|):
-
DBX_RESULT_INDEX
-
Всегда установлен, то есть возвращённый объект имеет свойство
data
, которое является двухмерным массивом, индексированным цифрами. Например, в выраженииdata[2][3]
2 – это количество строк (или записей) ответа, а 3 – это количество столбцов (или полей) в каждой строке ответа. Индексация начинается с 0; -
DBX_RESULT_ASSOC
-
Возвращённый объект содержит информацию, относящуюся также и к
DBX_RESULT_INFO
, даже если она и не специфицирована; -
DBX_RESULT_INFO
-
Предоставлять информацию о столбцах (имя и тип данных);
-
DBX_RESULT_ASSOC
-
Устанавливает соответствие между значением поля и его именем, используемом как ключ, и делает это соответствие доступным свойству
data
возвращаемого объекта.
Ассоциированные результаты являются на самом деле ссылками на численно индексированные данные, так что модификация
data[0][0]
имеет такой же эффект, что и модификацияdata[0]['имя первого столбца']
.DBX_RESULT_INDEX
используется всегда, независимо от фактического значения параметра флаги. Это означает, что эффективными являются только следующие комбинации:-
DBX_RESULT_INDEX
; -
DBX_RESULT_INDEX | DBX_RESULT_INFO
; -
DBX_RESULT_INDEX | DBX_RESULT_INFO | DBX_RESULT_ASSOC
– по умолчанию, если параметр флаги не задан.
-
Возвращаемое значение
Результат выполнения SQL-запроса:
-
объект типа
object
(только в том случае, если SQL-запрос порождает строки ответа); -
1 – успешная обработка SQL-запроса, не порождающего строк ответа (например,
CREATE TABLE …
); -
0 – неудачная обработка любого SQL-запроса.
Возвращаемый объект object
имеет 4 или 5 свойств, в зависимости от значения параметра флаги:
-
handle
-
Правильный дескриптор присоединённой БД. Может использоваться в функциях, где фигурирует в качестве параметра функции, например:
$result = dbx_query ($link, "SELECT make FROM auto"); //вызываем функцию php-интерфейса СУБД ЛИНТЕР для получения свойств первого столбца запроса $columns = Linter_Get_Col_Prop ($result- >handler, 1);
-
cols
иrows
-
Содержат количество столбцов (полей) и строк (записей), соответственно, например:
$result = dbx_query ($link, 'SELECT make FROM auto'); echo $result- >rows; // количество строк echo $result- >cols; // количество столбцов
-
info
(по желанию) -
Двумерный массив, состоящий из именованных строк (
name
иtype
), для получения информации о столбце. Возвращается только тогда, когда установлен флагDBX_RESULT_INFO
илиDBX_RESULT_ASSOC
, например:$result = dbx_query ($link, 'SELECT make, model, year FROM auto', 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
-
Содержит результаты выполнения запроса, возможно, ассоциированные также с именами столбцов, в зависимости от установленного значения параметра флаги. Если установлен флаг
DBX_RESULT_ASSOC
, то к столбцам можно обращаться по их именам$result- >data[2]["имя столбца"]
, например (вывод результатов в HTML-формате):$result = dbx_query ($link, 'SELECT make, model, year FROM auto'); 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";