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

Database Helper Methods ابزارهایی برای دریافت اطلاعات وضعیت اتصال و جدول‌ها، ساخت رشته‌های SQL متداول و بررسی نتیجه عملیات فراهم می‌کنند. این متدها در کنار Query Builder به عیب‌یابی و نوشتن کد دیتابیس کمک می‌کنند.

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

insert_id() شناسه درج‌شده را می‌دهد، affected_rows() تعداد ردیف‌های تغییرکرده را برمی‌گرداند، last_query() آخرین SQL را نمایش می‌دهد، count_all() تعداد ردیف‌های جدول را می‌شمارد، table_exists() وجود جدول را بررسی می‌کند و field_exists() وجود ستون را می‌سنجد.

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

 $id = $this->db->insert_id();
 $affected = $this->db->affected_rows();
 $exists = $this->db->table_exists('products');
 $hasSku = $this->db->field_exists('sku', 'products');

نکته مهم

در Production، خروجی last_query() را بدون حذف داده‌های حساس در اختیار کاربر قرار ندهید. برای گزارش‌گیری، Log کنترل‌شده و بدون مقادیر محرمانه ثبت کنید.

مطالعه مرتبط

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

متدهای کمکی دیتابیس

متد یا مفهومکاربرد
insert_id()شناسه آخرین درج.
affected_rows()تعداد ردیف‌های متاثر.
count_all()تعداد کل ردیف‌های جدول.
table_exists() و field_exists()بررسی وجود جدول و ستون.
list_tables() و list_fields()فهرست جدول‌ها و ستون‌ها.
last_query() و version()آخرین Query و نسخه دیتابیس.

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

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

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

در بازبینی کد، ترتیب و نتیجه متدهای insert_id()، affected_rows()، count_all()، table_exists() و field_exists() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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