Php 用Laravel 5.1中的类似内容编制报表
祝你节日快乐 这是laravel 5.1中的原始查询Php 用Laravel 5.1中的类似内容编制报表,php,laravel-5.1,prepared-statement,Php,Laravel 5.1,Prepared Statement,祝你节日快乐 这是laravel 5.1中的原始查询 $select = DB::select(DB::raw("SELECT * FROM `grids` INNER JOIN masters ON grids.q_id=masters.q_id LEFT JOIN qrs ON qrs.qr_id= masters.qr_id AND qrs.mi_cd = grids.mi_cd WHERE grids.mi_cd='ZZ' AND
$select = DB::select(DB::raw("SELECT * FROM `grids` INNER JOIN masters ON
grids.q_id=masters.q_id LEFT JOIN qrs ON qrs.qr_id= masters.qr_id
AND qrs.mi_cd = grids.mi_cd WHERE grids.mi_cd='ZZ'
AND substr(grids.q_id,1,3)='".$user->id."'
AND grids.q_id LIKE '___".trim(":year")."%' AND qrs.submitted=1"),
[':year'=>'$year']
);
我的问题是,如果我在laravel原始查询中使用带有like的prepare语句,那么找不到数据。如果我使用不带prepare语句的语句,那么它将被sql注入。
有没有办法,用类似的语句编写语句,在Laravel原始查询中 您仅使用DB::raw的任何特定原因?使用查询生成器可以轻松完成大部分查询,如
->where
和->join
?有时查询会很复杂,那么我只有一个解决方案原始查询。我的问题是,在Laravel原始查询中,是否有任何方法可以使用like编写语句???where('grids.q_id','like','uu_'.trim($year)。%')Laravel查询生成器负责SQL注入本身,除非使用DB::raw()
。也许这有帮助:DB::table('grids')->选择('*')->leftJoin('masters','grids.q_id','=','masters.q_id')->leftJoin('qrs',function('join){$join->on('qrs.qr_id','=','masters.qr_id')->where('qrs.mi_cd','=','grids.mi_cd'))->where('grids.mi_cd','=','ZZ where'->where('substr('grids.q_id,1,3'),'=','user id->where('grids.q_id','like','uy'))->where('utrim)“%”)->其中('qrs.submitted','=',1);