thinkphp5中使用@数据库变量的问题

杰克船长_ 2017-03-25 10:37:22
Db::execute(" set @likes='%管理%'; ");
$res=Db::table("erp_build_form")
->where('title','like',"@likes")
->order('id','desc')
->select(false);
//->select();
print_r($res);


这样生成的sql是 SELECT * FROM erp_build_form WHERE title LIKE '@likes' ORDER BY id desc
我想要的@likes 不要引号,要引号就当成变量查询了。。。。
...全文
628 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
allmai_net 2017-03-29
  • 打赏
  • 举报
回复
为什么不用存储过程? http://www.allmai.net/?ctrl=detail&method=note&id=12&typename=note
xuzuning 2017-03-26
  • 打赏
  • 举报
回复
但是用户变量只在当前连接中有效,所以并不存在预置的事情
杰克船长_ 2017-03-26
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
->where('title','like',"@likes") 为什么要这样写呢?直接 ->where('title','like',"%管理%") 不是很简单吗
这个说起来就比较复杂了,因为我们的系统中,部分是有默认值的,比如默认用户的id和默认的用户部门的id。所以,我们想实现执行下sql的set命令(十几个变量),这样 以后的sql就能自动寻找已经定义好的变量直接执行了。有点类似于tp的bind。但是tp的bind有个bug,就是在插入的时候,bind的参数必须和sql中的参数一致。我们做到一致的话比较困难,需要经过一部转换。 不知道有没有说明白。。。
xuzuning 2017-03-26
  • 打赏
  • 举报
回复
->where('title','like',"@likes") 为什么要这样写呢?直接 ->where('title','like',"%管理%") 不是很简单吗

4,251

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧