رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در معتبر سازی پارامتر ورودی
#1
درود
من برای معتبر سازی از کد زیر استفاده کردم 
$query = data::find()->where("( `dtitle` like '%:search%' or `dtitle` like ':search%' or `dtitle` like '%:search' ) and `dstate`=1")->addParams([':search' => $search])->orderBy(' `did` desc');

و وقتی از 
$command = $query->createCommand();

echo $command->rawSql;
استفاده میکنم تا sql ایجاد شده را ببینم، کد ساخته شده زیر رو نشون میده : 
SELECT * FROM `data` WHERE ( `dtitle` like '%'weqwe'%' or `dtitle` like ''weqwe'%' or `dtitle` like '%'weqwe'' ) and `dstate`=1 ORDER BY `did` DESC
و چون مهمه که خروجی به صورت شیء ActiveQuery برگردانده بشه از این روش استفاده میکنم.

مشکل اینجاست وقتی پارامتر رو جایگزین یا توی کد سرجاش میذاره، اون رو بین ' میذاره و کد sql رو دچار مشکل میکنه..
اشتباه من کجاست و یا چه کنم که دیگه اینجوری نشه و بتونم پارامتر ارسالی رو معتبر سازی کنم و کوئری به درستی اجرا بشه..
با تشکر
پاسخ
تشکر شده توسط:
#2
اینو امتحان کنین:
$query = data::find()->where([['like', 'dtitle', $search]])->orderBy('did', 'DESC');
پاسخ
تشکر شده توسط: dmaon
#3
این لینک رو حتماً بخونید: http://www.yiiframework.com/doc-2.0/yii-...e()-detail
پاسخ
تشکر شده توسط: dmaon




کاربران در حال بازدید این موضوع: 1 مهمان