在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。
添加回答
举报
0/150
提交
取消