۞ → Читать Урок База данных.

Опубликовано: 17.06.2017

Изменения в Database API в Drupal 7

Изменен синтаксиси подключения к базе данных. Изменена работа функции db_query(). ((комментарий)) Объектный подход при работе с запросами к базе данных.

Подключение к базе данных

Изменился синтакис подключения сайта к базе данных:

// в Drupal 6 // $db_url = 'mysqli://username:[email protected]/basename'; // в Drupal 7 $databases['default']['default'] = array( 'driver' => 'mysql', 'database' => 'basename', 'username' => 'username', 'password' => 'password', 'host' => 'localhost', );

Выполнение запросов с помощью db_query() в Drupal 7

Drupal 7 поддерживает db_query(), но db_query() изменен при работе со вставками(placeholders).

Примеры запросов используя db_query() в Drupal 6 и Drupal 7:

// запрос: SELECT uid, login FROM {users} WHERE status = 1 AND name = "user" // код для Drupal 6 $users = db_query('SELECT uid, login FROM {users} WHERE status = %d AND name = "%s"', 1, 'user'); // код для Drupal 7 $users = db_query('SELECT uid, login FROM {users} WHERE status = :status AND name = :name', array(':status' => 1, ':name' => 'user'));

Объектный подход при работе с базой данных.

Раньше для выполнения запросов к базе данных использовалась функция db_query(). Теперь каждому из типов запросов (вставка, удаление, обновление, выборка) соответствует своя функция (db_insert(), db_delete(), db_update(), db_select()). Каждая из этих функций возвращает объект позволяющий модифицировать и выполнять SQL запрос.

Функции для работы с базой данных

функция db_and() функция db_close() функция db_condition() функция db_delete() функция db_driver() функция db_escape_field() функция db_escape_table() функция db_insert() функция db_like() функция db_merge() функция db_next_id() функция db_or() функция db_query() функция db_query_range() функция db_query_temporary() функция db_select() функция db_set_active() функция db_transaction() функция db_truncate() функция db_update() функция db_xor()

Обработка результатов запросов тоже изменилось. Вместо функций db_result(), db_fetch_array(), db_fetch_object() и т. д., пришли методы класса DatabaseStatementInterface:

rss