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