• 3.1.9
  • کامل شده
  • منقضی شده
این داکیومنت از طرف توسعه‌دهنده ساپورت نمی‌شود، جدیدترین ورژن داکیومنت بزودی ترجمه خواهد شد.

Database Driver Reference رفتار و متدهای پایه Driverهای دیتابیس را توضیح می‌دهد. CodeIgniter برای پشتیبانی از موتورهای مختلف، یک لایه مشترک فراهم می‌کند و Driver مسئول تبدیل عملیات عمومی به SQL و رفتار مخصوص موتور مقصد است.

ساختار و API اصلی

متدهای عمومی مانند platform()، version()، escape()، query()، insert_id() و affected_rows() از طریق اتصال قابل دسترسی هستند. بعضی قابلیت‌ها مانند نوع داده، قفل‌گذاری، LIMIT و نحوه تولید شناسه خودکار ممکن است بین MySQL، PostgreSQL، SQLite و SQL Server تفاوت داشته باشند.

نمونه استفاده

 echo $this->db->platform();
 echo $this->db->version();
 $escaped = $this->db->escape($value);
 $query = $this->db->query('SELECT * FROM products WHERE sku = ?', array($sku));

نکته مهم

اگر برنامه باید روی چند موتور دیتابیس اجرا شود، Queryهای خام و Migrationها را روی همه موتورهای هدف تست کنید. نام Driver را با نسخه افزونه PHP تطبیق دهید.

مطالعه مرتبط

برای ادامه مطالعه، MVC، کوئری، ترنزکشن را ببینید.

رفتار Driverها

متد یا مفهومکاربرد
platform()نام موتور دیتابیس.
version()نسخه موتور.
escape()Escape مقدار بر اساس Driver.
insert_id()شناسه درج‌شده.
affected_rows()تعداد ردیف‌های متاثر.
capabilitiesقابلیت‌های وابسته به موتور و Driver.
portabilityتفاوت‌های SQL میان موتورهای مختلف.

نکات عملی برای دیتابیس

پیش از استفاده در محیط واقعی، Driver و نسخه موتور دیتابیس را با قابلیت‌های موردنیاز تطبیق دهید. Queryهای دارای ورودی کاربر باید Binding داشته باشند، عملیات چندمرحله‌ای باید در Transaction قرار بگیرند و برای Queryهای پرتکرار، Index و Execution Plan بررسی شود. تعداد Queryها و حجم Result نیز روی حافظه و زمان پاسخ اثر دارد.

برای عیب‌یابی، SQL تولیدشده، تعداد ردیف‌های متاثر و زمان اجرا را در محیط توسعه ثبت کنید. در Production اطلاعات محرمانه را از Log حذف کنید و خطاهای دیتابیس را به کاربر نشان ندهید. اگر ساختار جدول تغییر می‌کند، تغییر را نسخه‌بندی و پیش از اجرا Backup بگیرید.

در بازبینی کد، ترتیب و نتیجه متدهای platform()، version()، escape()، insert_id() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

سایر پست های داکیومنت