Drupal оновити або вставити запис в таблицю - drupal_write_record

Одним із способів видалити або вставити запис в системну таблицю на Drupal є функція під назвою drupal_write_record (). Як ви напевно вже здогадалися, вона дозволяє або вставити, або видалити запис таблиці, але з парочкою істотних, і вельми неприємних нюансів, які будуть описані нижче.

Опис завдання:

Отже, нехай ми маємо таблицю ImyaModulya_testTable. У неї є N-ну кількість звичайних полів неважливо якого типу. Наприклад нехай це будуть id, nazvanie_knigki, god_izdaniya і avtor, де, зверніть увагу, поле id буде у нас primary-ключем / праймарі-Кєєм. Виходячи з даної інформації код буде ось таким.

Варіанти коду з drupal_write_record:

1. Вставка нових записи в таблицю (відразу напишу, що просто вписати primary key для обох випадків у вас стосовно описаної ситуації не вийде, тому що обов'язково буде генеруватися неприємний виняток):

2. Оновлення вже існуючої записи, з урахуванням primary key:

Представлений варіант із застосуванням drupal_write_record () вкрай незручний, тому що веб-програмісту при кожному запиті доведеться якось перевіряти чи існує в заданій таблиці бази даних поле з вказаним значенням primary key чи ні, інакше в разі позитивної відповіді буде виникати помилка типу duplicate entry (або щось в цьому роді, точно зараз не згадаю).

Підведемо підсумок:

Тому оптимальним варіантом буде використання конструкції db_merge (). яка позбавлена ​​описаних недоліків. Приклад її використання в зазначеному контексті я розгляну в одній з наступних статеек.

Актуально для Drupal 7.

Схожі статті