CodeIgniter 3, Запити

Основи запитів

Регулярні запити

Для виконання запиту використовуйте функціюquery :

Функція query() повертаєоб'єкт результату запиту до бд. Коли тип запитів читання - можна використовувати для відображення результатів. Коли тип запитів “запис” він просто повертає TRUE чи FALSE залежно від успіху чи невдачі. При отриманні даних зазвичай записують запит до окремої змінної:

Спрощені запити

Методsimple_query - спрощена версія $this->db->query() методу. Він не повертає результуючий набір бази даних, не налаштовує таймер запиту або прив'язки даних і не зберігає запит для налагодження. Він просто дозволяє надіслати запит. Більшість користувачів рідко використовують цю функцію.

Він повертає функцію бази даних “виконання”. Що зазвичай TRUE/FALSE при успіху або невдачі для запитів типу INSERT, DELETE або UPDATE (що дійсно має бути використане) і ресурс/об'єкт при успіху для запитів із результатами.

pg_exec() PostgreSQL (для прикладу) завжди повертає ресурс при успіху, навіть для запитів типу “запис”. Тож врахуйте це, якщо ви шукаєте логічне значення.

Робота з префіксами бази даних вручну

Якщо у вас налаштований префікс бази даних і ви хочете додати його в ім'я таблиці при запиті, можна використовувати такі:

Якщо з будь-якої причини ви хочете змінити префікс програмно, без необхідності створювати нове підключення, ви можете використати цей метод:

Захист ідентифікаторів

У багатьох базах даних рекомендується захистити таблиці та імена полів, наприклад зворотними лапками MySQL.У Побудовнику Запитів, запити автоматично захищені, проте якщо вам потрібно вручну захиститиідентифікатор можна використовувати:

Хоча будівельник запитів намагатиметься правильно цитувати будь-які поля та імена таблиць, які ви передаєте йому, зверніть увагу, що він НЕ призначений для роботи з введенням даних користувачем. НЕ ПЕРЕДАВАЙТЕ йому неперевірені дані користувача.

Ця функція також додаватиме префікс до таблиці, якщо він у вас вказаний у конфігураційному файлі бази даних. Щоб увімкнути додавання префікса, встановіть TRUE (булево) другим параметром:

Безпека Запитів

Безпека – дуже хороша практика безпеки ваших даних перед відправкою до бази. CodeIgniter має три методи, які допоможуть вам зробити це:

$this->db->escape() Ця функція визначає тип даних, так що він може убезпечити лише строкові дані. Він також автоматично додає одинарні лапки навколо даних, тому ви не повинні це робити самостійно:

$this->db->escape_str() Ця функція робить безпечними передані їй дані незалежно від типу. Більшість часу ви будете використовувати вищенаведену функцію ніж цю. Використовуйте функцію так:

$this->db->escape_like_str() Цей метод повинен використовуватися, коли рядки використовуються в умовах для таких підстановочних знаків LIKE як ('%', '_').

Метод escape_like_str() використовує '!' (знак вигуку), щоб уникнути спеціальних символів для LIKE умов. Оскільки цей метод уникає обгортки в лапки себе, він не може автоматично додати ESCAPE '!' умова для вас і тому вам доведеться робити це вручну.

Прив'язки запиту

Прив'язки дозволяють спростити синтаксис запитів, дозволяючи системі зібрати запити для вас. Розглянемо наступний приклад:

Знаки запитання,автоматично замінюються значення в масиві як другий параметр функції запиту.

Прив'язки також для роботи з масивами, які будуть перетворені в IN наборах:

Результат запиту буде:

Другий плюс від використання зв'язувань – значення екрануються автоматично, виробляючи безпечні запити. Ви не повинні займатися екрануванням даних вручну; двигун зробить це автоматично за вас.

Обробка помилок

$this->db->error();

Якщо вам потрібно отримати останню помилку, яка відбулася, метод error() повертає масив, що містить її код та повідомлення. Ось швидкий приклад: