انجمن ایران پی اچ پی

نسخه کامل: کدوم روش بهتره؟
شما در حال مشاهده نسخه متنی این صفحه می‌باشید. مشاهده نسخه کامل با قالب بندی مناسب.
سلام
دوستان من میخوام یه سری اطلاعات رو بریزم دیتابیس
برنامه حالت آزمون آنلاین داره
حالا اطلاعات پاسخ سوالات کاربر وارد دیتابیس میخواد بشه که بعداً از این اطلاعات و پاسخ ها نتایج و یه سری چیزهای دیگه استخراج بشه
به نظر شما از کدوم روش واسه ذخیره سازی اطلاعاتش استفاده کنم که هم از لحاظ سرعت اجرا و هم کم دردسر بودنش بهتر باشه؟

روش اول :
کد PHP:
$answer = array();
              for(
$i=1;$i<$_POST['numq']+1;$i++){
                  
$answer[] = $_POST['q_'.$i.''];
                  
$answer[] = $_POST['answer_'.$i.''];
              }
              
              
$this->DB->query("insert into ***q_*****e VALUES(NULL,'".$this->Uid."','".$_POST['match']."','','".serialize($answer)."')"); 


روش دوم :
کد PHP:
for($i=1;$i<$_POST['numq']+1;$i++){
                  
$question $_POST['q_'.$i.''];
                  
$answer $_POST['answer_'.$i.''];
                  
$this->DB->query("insert into ****q_u*****e VALUES(NULL,'".$this->Uid."','".$_POST['match']."','".$question."','".$answer."')");  
              } 
روش دوم از این نظر که یک بار Request شما به سمت سرور میره مسلما خیلی بهتر از اولی هست.

نکته دیگر اینکه پیشنهاد میکنم داده هایی که میخواهی در کنار هم داخل یک فیلد جدول ذخیره کنی از serialize استفاده نکنی (می تونی تو داکیومنت خود php اتفاقات غیرمنتظره که روی برخی مقادیر رخ داده رو ببینی. بجاش از json_encode استفاده کن تا با هر زبان دیگه ای خواستی داده هاتو پارس کنی (مثلا جاوا اسکریپت و یا شاید بخواهی API بدی بیرون بعدا با دات نت هم وصل شه).
بستگی به اطلاعات شما داره
برخی موارد لازم روی جواب یک سوال درصد و ... گرفته بشه که با این کار روش دوم بهتره

نقل قول: روش دوم از این نظر که یک بار Request شما به سمت سرور میره مسلما خیلی بهتر از اولی هست.
هر دو روش یه بار میره
(۱۳۹۳ مهر ۱ ۰۱:۱۶ عصر)saeideng نوشته شده توسط: [ -> ]بستگی به اطلاعات شما داره
برخی موارد لازم روی جواب یک سوال درصد و ... گرفته بشه که با این کار روش دوم بهتره

نقل قول: روش دوم از این نظر که یک بار Request شما به سمت سرور میره مسلما خیلی بهتر از اولی هست.
هر دو روش یه بار میره

دوست عزیز اگر دقت کرده باشین تو یک حالت دستور INSERT داخل حلقه هست که هر بار اجرای حلقه موجب می شود تا یکبار درخواست ارسال شود، اما در روشی دیگر با serialize کردن تمام مقادیر را یکبار بیرون از حلقه می فرستد.

در روشی که INSERT یکبار اجرا می شود مسلما بهینه تر عمل شده است.
این چطوره
کد PHP:
$val = array();
for(
$i=1;$i<$_POST['numq']+1;$i++){
                  
$question $_POST['q_'.$i.''];
                  
$answer $_POST['answer_'.$i.''];
                  
$val[] = "(NULL,'".$this->Uid."','".$_POST['match']."','".$question."','".$answer."')";
              } 
              
                   
$this->DB->query("insert into ****q_u*****e VALUES "join(',',$val)); 
لینک مرجع