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() повертає масив, що містить її код та повідомлення. Ось швидкий приклад: