当前位置: 首页 >数据库 > Thinkphp5.0 的实践一

Thinkphp5.0 的实践一

Thinkphp5.0 的实践一


 tp5.0默认没有__SELF__,需要定义,

define('__SELF__',strip_tags($_SERVER['REQUEST_URI']));

tp5.0默认没有NOW_TIME,需要定义,

define('NOW_TIME',$_SERVER['REQUEST_TIME']);

 
tp5的sql使用concat函数报错:
$model = new User();$where = ['id'=>['<',30]];$priData = $model->where($where)->order('concat(pri_path,"-",id) asc')->buildSql();dump($priData);
 
打印出来的SQL语句是:
SELECT * FROM `user` WHERE  `id` < 30 ORDER BY `concat(pri_path`,`"-"`,`id)` ASC
SQL语句中把concat()函数当做字段用反引号引起来了,报如下错误:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sort`` ASC,`concat(`pri_path``,`'-'`,``id`)` ASC' at line 1。


 

order()排序无法使用,

解决方法一(使用字段别名)

$model = new User();$where = ['id'=>['<',30]];$priData = $model->where($where)->field("id,concat(`pri_path`,'-',`id`) as names")->order('names asc')->buildSql();dump($priData);

 

解决方法二(使用原生SQL语句):

$db_config = Config('database');$db_prefix = $db_config['prefix'];$in_id = '1,2,3,4';$priData = Db::query("select * from {$db_prefix}user WHERE `id` IN ({$in_id}) order by `sort` asc,CONCAT(`pri_path`,'-',`id`) asc");

 

 

 

 

 

 

 

 


作者:学知无涯
来源链接:https://www.cnblogs.com/gyfluck/p/9437386.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117599.html

标签:SQL_syntax
分享给朋友:

“Thinkphp5.0 的实践一” 的相关文章