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

Query Result شیئی است که نتیجه اجرای دستور SELECT را نگه می‌دارد. CodeIgniter 3 امکان دریافت همه ردیف‌ها به شکل آبجکت یا آرایه، دریافت یک ردیف، بررسی تعداد ردیف‌ها و ستون‌ها و خواندن Metadata فیلدها را فراهم می‌کند.

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

result() آرایه‌ای از آبجکت‌ها می‌دهد، result_array() آرایه‌ای از آرایه‌ها برمی‌گرداند، row() و row_array() یک ردیف را می‌خوانند، num_rows() تعداد ردیف‌ها را می‌دهد و field_data() اطلاعات ستون‌ها را برمی‌گرداند. برای آزادسازی نتیجه می‌توانید از free_result() استفاده کنید.

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

 $query = $this->db->query('SELECT id, name FROM products');
 foreach ($query->result_array() as $row) {
     echo $row['name'];
 }
 echo $query->num_rows();

نکته مهم

اگر فقط یک ردیف نیاز دارید از row() استفاده کنید و همه نتایج را بی‌دلیل در حافظه بارگذاری نکنید. برای پردازش داده حجیم، از روش‌های مرحله‌ای یا محدودسازی نتیجه استفاده کنید.

مطالعه مرتبط

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

متدهای Query Result

متد یا مفهومکاربرد
result()آرایه‌ای از آبجکت‌ها.
result_array()آرایه‌ای از آرایه‌ها.
row() و row_array()دریافت یک ردیف.
num_rows()تعداد ردیف‌ها.
num_fields()تعداد ستون‌ها.
field_data()Metadata ستون‌ها.
free_result()آزاد کردن منابع نتیجه.

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

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

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

در بازبینی کد، ترتیب و نتیجه متدهای result()، result_array()، row() و row_array()، num_rows() را بررسی کنید. نام متد به‌تنهایی تضمین نمی‌کند ورودی معتبر یا خروجی امن باشد، بنابراین رفتار هر متد را با تست و مستندات همان نسخه کنترل کنید.

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