تالار گفتمان nCIS.ir

نسخه‌ی کامل: مشکل در معتبر سازی پارامتر ورودی
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
درود
من برای معتبر سازی از کد زیر استفاده کردم 
$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 رو دچار مشکل میکنه..
اشتباه من کجاست و یا چه کنم که دیگه اینجوری نشه و بتونم پارامتر ارسالی رو معتبر سازی کنم و کوئری به درستی اجرا بشه..
با تشکر
اینو امتحان کنین:
$query = data::find()->where([['like', 'dtitle', $search]])->orderBy('did', 'DESC');
این لینک رو حتماً بخونید: http://www.yiiframework.com/doc-2.0/yii-...e()-detail