tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
taotaoit ThinkPHP5.1 2019-05-16 2736 0
关于本站

淘淘IT

记录工作学习中的点点滴滴

本站创建于2017年,用于记录工作和学习中遇到的问题。同时,不断提升网站的使用体验,增加新的功能。

918076 1287 12
最新评论
感谢大佬解决了我的问题
评 留言
11111111111111111111ewqr :ku:
评 留言
@xiaoniba 好像是编码GBK和utf-8的区别,请看下我摘抄的一篇文章,里面有介绍http://taotaoit.com/article/details/885.html,你可以尝试下是否可以
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
\x7f-\xff 这个匹配什么东东,会不会出现安全问题??? 改成这样如何 if ($strict && !preg_match('/^[\w\.\*\x{4e00}-\x{9fa5}]+$/u', $key)) {
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
完美解决 牛逼
评 tp5.1中字段别名是汉字,提示错误:不支持的数据表达式
文章标签更多
ThinkPHP (124)
Mysql (28)
DedeCms (30)
jQuery (28)
证件照 (1)
setInc (3)
setDec (3)
onclick (3)
打开边栏(ESC) 关闭边栏(ESC)

tp5.1中字段别名是汉字,提示错误:Exception in Mysql.php line 149 不支持的数据表达式:编号

代码如下:


$rs = Db::table('users')
			->field(['userId'=>'编号','loginName'=>'用户名'])
			->where('userId',1)
			->find();
如果直接执行sql语句,是可以用汉字别名的,如:



$sql = 'select userId as 编号,loginName as 用户名 from users where userId=1';
		$rs2 = Db::query($sql);
怎么解决呢?


根据提示,我们打开Mysql.php 149行,路径:根目录\thinkphp\library\think\db\builder\Mysql.php


if ($strict && !preg_match('/^[\w\.\*]+$/', $key)) {
            throw new Exception('not support data:' . $key);
        }
原来是正则验证导致汉字出错,\w匹配字母或数字或下划线,等价于[A-Za-z0-9_],再加上.和*


我们可以在正则中加上汉字,就可以应用汉字别名了,修改如下:


if ($strict && !preg_match('/^[\w\.\*\x7f-\xff]+$/', $key)) {
            throw new Exception('not support data:' . $key);
        }



版权声明:本站原创文章,允许自由转载。

相关推荐
Non-static method think\Config::get() should not be called statically
ThinkPHP5.1 | 2018-12-29 4795
原来是这样use think\Config; 改成这样use think\facade\Config; 下面是官方手册的解释 配置获取 要使用Config类,首先需要在你的类文件中引入 use think\facade\Config; 或者(因为系统做了类库别名,其实就是调用think\facade\Config) u...
ThinkPHP5.1 if判断语句好像不用condition了
ThinkPHP5.1 | 2018-11-21 2687
thinkphp5.1 if判断语句好像不用condition了 thinkphp5里面 IF标签 建议: {if condition="$user.name neq 'ThinkPHP'"}ThinkPHP {else /} other Framework {/if} 用法示例: {if condition="($nam...
评论:0条
评论加载中...
发表评论