انجمن ایران پی اچ پی
کدوم روش بهتره؟ - نسخه قابل چاپ

+- https://forum.iranphp.org - انجمن ایران پی اچ پی
+-- انجمن: پی اچ پی/PHP (/Forum-%D9%BE%DB%8C-%D8%A7%DA%86-%D9%BE%DB%8C-PHP)
+--- انجمن: کدنویسی (/Forum-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C)
+--- موضوع: کدوم روش بهتره؟ (/Thread-%DA%A9%D8%AF%D9%88%D9%85-%D8%B1%D9%88%D8%B4-%D8%A8%D9%87%D8%AA%D8%B1%D9%87%D8%9F)



کدوم روش بهتره؟ - ahora - ۱۳۹۳ شهريور ۲۸ ۰۱:۳۱ عصر

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

روش اول :
کد 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."')");  
              } 



RE: کدوم روش بهتره؟ - alireza.stack - ۱۳۹۳ شهريور ۳۱ ۰۲:۲۶ عصر

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

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


RE: کدوم روش بهتره؟ - saeideng - ۱۳۹۳ مهر ۱ ۰۱:۱۶ عصر

بستگی به اطلاعات شما داره
برخی موارد لازم روی جواب یک سوال درصد و ... گرفته بشه که با این کار روش دوم بهتره

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


RE: کدوم روش بهتره؟ - alireza.stack - ۱۳۹۳ مهر ۱ ۰۲:۰۱ عصر

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

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

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

در روشی که INSERT یکبار اجرا می شود مسلما بهینه تر عمل شده است.


RE: کدوم روش بهتره؟ - Reza - ۱۳۹۳ مهر ۲ ۰۴:۵۴ صبح

این چطوره
کد 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));