Работа с базой данной в Drupal 7.
В Drupal 7 используется уровень абстракции баз данных, основанный на PDO. Таким образом, мы можем работать с базой данных, не заботясь о верификации пользовательских данных для предупреждения SQL-инъекций. Drupal эту работу выполняет за нас.
Примеры запросов.
SELECT
Обычный SQL-запрос:
1 | SELECT id FROM gallery WHERE type='image' ORDER BY id ASC |
Для Друпала запрос будет выглядеть так:
1 2 3 4 5 | $result = db_select('gallery', 'ag') ->fields('ag', array('id')) ->condition('type', 'image') ->orderBy('id', 'asc') ->execute(); |
Обрабатываем полученный результат, формируя массив данных:
1 2 3 | foreach($result as $row){ $gallery_id[]=$row->nid; } |
Также полученный результат мы можем обработать следующим образом:
Получение отдельной записи (строки) в виде объекта
1 | $record = $result->fetchObject(); |
Получение отдельной записи (строки) в виде массива
1 | $record = $result->fetchAssoc(); |
Получение только первого поля следующей записи(строки)
1 | $record = $result->fetchField(); |
Получение всего (полного) результата в виде массива
1 | $record = $result->fetchAll(); |
Примеры других запросов:
INSERT
1 2 3 4 5 6 7 | db_insert('gallery') ->fields(array( 'gallery_id'=>$gallery_id, 'image_id'=>$nid, 'warning'=>$warning, )) ->execute(); |
UPDATE
1 2 3 4 5 6 7 | db_update('gallery') ->fields(array( 'gallery_id'=>$gallery_id, 'warning' => $warning, )) ->condition('image_id', $nid) ->execute(); |
DELETE
1 2 3 | db_delete('gallery') ->condition('id', '$id') ->execute(); |
Полезный сервис для конвертации sql-запросов в выражения DBTNG здесь.
Категория: Drupal