Разбор результата
Итак, выполнять запрос мы научились, теперь займемся разбором результата.
Метод query() возвращает результат в формате, который задается его третьим параметром:
$all = $db->query('SELECT * FROM `table`', null, 'assoc'); // Вся таблица в ассоциативном массиве
$name = $db->query('SELECT `name` FROM `table` WHERE `id`=?i', array($id), 'el'); // Одно значение
$id = $db->query('INSERT INTO `table` VALUES (?)', array('Новая строка'), 'id'); // Идентификатор только что вставленной строки
Формат разбора результата задается в виде обычной строки. Если он не указан, то возвращается обычный mysqli_result.
Форматы разбора
Здесь приведены возможные форматы и описание, когда они могут быть удобны.
no |
Без разбора. Возвращается Используется по умолчанию, когда аргумент |
assoc |
Выборка нескольких строк в виде массива записей.
Все записи в виде ассоциативных массивов. Аналог перебора с |
row |
Аналогично, только каждой записи соответствует порядковый массив вместо ассоциативного
(вроде перебора с |
object |
Для особых гурманов аналог |
col |
Выборка одного столбца из нескольких строк. Например, список имён пользователей: |
kassoc kassoc:<key> |
Аналогично Либо столбец-ключ можно указать явно: |
iassoc irow icol iobject |
Аналоги В случае, когда выбирается много данных, которые следует по очереди перебрать, это может быть эффективнее, чем перебирать их внутри goDB формируя массив, а потом перебирать уже его в прикладном коде. Но далеко не всегда. Получаемых объект содрежит в себе ссылку на данные и реализует следующие интерфейсы:
Вобщем ведёт себя практически, как обычный массив. |
vars |
Выборка двух столбцов, из которых первый становится ключом, а второй элементом результирующего ассоциативного массива. Например, таблица каких-то настроек для конкретных пользователей: user | option_name | option_value 1 | "option1" | "value1" 2 | "option2" | "value2" 1 | "option3" | "value3" 1 | "option4" | "value4" Запрашиваем все настройки для пользователя с id #1: В итоге получаем: Можно делать выборку по одному столбцу, тогда он будет, как ключём, так и значением. |
rowassoc |
Выбирается одна строка и представляется в виде ассоциативного массива полей. В случае, если такой строки нет (запрос вернул ноль записей), возвращается |
rowrow |
Тоже самое, но строке соответствует порядковый массив. |
rowobject |
Ну, вы поняли... |
el |
Одно значение (выборка одного столбца из одной строки). Или так: |
bool |
Аналогично |
id |
Новое значение автоинкрементного поля: |
ar |
Количество затронутых запросом полей ( |
num |
Количество строк в ответе. Если, конечно, пригодится без самого ответа. Не считайте, пожалуйста, с его помощью количество строк в таблице :) |