为了账号安全,请及时绑定邮箱和手机立即绑定

thinkphp_sql查询语句

thinkphp_sql查询语句

吃鸡游戏 2019-04-07 11:18:54
在thinkphp的控制器中写sql语句的时候,哪种写法是正确的?$result=$m->where('username="'.$user.'"')->find();$result=$m->where('username='.$user)->find();【代码A】publicfunctioncheckuser(){$user=I('post.user');$m=M('users');$result=$m->where('username="'.$user.'"')->find();$this->ajaxReturn($result);}【代码B】publicfunctioncheckuser(){$user=I('post.user');$m=M('users');$result=$m->where('username='.$user)->find();$this->ajaxReturn($result);}
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

我觉得代码A比较靠谱,TP的官方文档的示例中模型查询这块对于字符串的处理都是加上双引号的参考链接
如果说对于字符串参数没有任何过滤的话,B代码很容易出现注入漏洞。
嗯感谢@micblo的提醒,这两种如果不做额外的过滤处理的话确实都不防御sql注入,但是如果是用的B的风格的话可能在开发过程中测试的时候不经意间传错参数而返回错误的查询结果(自己以前确实遇到过这种问题),所以题主如果是依然要坚持使用上面的两种之一,还是建议使用A。
                            
查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 353 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信