Работа с базой данной в 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

Оставить комментарий