thinkphp中关于数据库字段名大小写问题

在使用thinkphp的时候,我遇到过数据库字段名大小写的问题,使用M()方法的时候,thinkphp默认会寻找小写的数据库字段,通过以下方法解决了:就是修改thinkphp的源码中的Library/Db/Driver.class.php文件,把 

 PDO::ATTR_CASE => PDO::CASE_LOWER

改为 

PDO::ATTR_CASE => PDO::CASE_NATURAL

或者在配置文件里面增加

‘DB_PARAMS’ => array(\PDO::ATTR_CASE => \PDO::CASE_NATURAL)

  这一句。第一次使用的时候这种解决方法果然可以,但是做另外一个项目的时候却始终不生效,无奈,百度了半天,找到一个方法,因为thinkphp执行的时候默认会把大写转换成小写,所以我们找到它的源码不让它转换就行。修改Common/functions.php里面的parse_name函数源码为:

function parse_name($name, $type=0) {
   /* if ($type) {
        return ucfirst(preg_replace_callback('/_([a-zA-Z])/', function($match){return strtoupper($match[1]);}, $name));
    } else { 
    //这里会将数据库表名里的大写转换为 _小写,修改成不转换
     return strtolower(trim(preg_replace("/[A-Z]/", "_\\0", $name), "_"));
    }*/
    return $name;}

其中注释掉的是原来的,未注释是新增的。修改Library/Think/Model.class.php里面的getTableName函数:

//$this->trueTableName    =   strtolower($tableName); //这里会将表名转换成小写,修改成不转换$this->trueTableName    =   $tableName;

修改其中一句,这样就可以解决数据库字段名大写的问题。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 文件
, class
, 函数
, 注释
this
数据库字段名大小写、mybatis 字段名大小写、mysql 字段名 大小写、oracle 字段名大小写、mongodb 字段名大小写,以便于您获取更多的相关知识。

时间: 2024-07-29 07:05:27

thinkphp中关于数据库字段名大小写问题的相关文章

数据库 表 字段-怎样读取数据库表中的所有字段名,并分别存储于以这个表名为名字的表中

问题描述 怎样读取数据库表中的所有字段名,并分别存储于以这个表名为名字的表中 怎样读取数据库表中的所有字段名,并分别存储于以这个表名为名字的表中 存储字段名的表的内容格式如下: 第一列存储行号,第二列存储字段名

如何thinkphp中从数据库中读取新闻的详细内容

问题描述 如何thinkphp中从数据库中读取新闻的详细内容 求救!!!如何thinkphp中从数据库中读取新闻的详细内容???急啊 解决方案 $m = M('表名') ; $m->where('id='.$id)->getField('新闻字段名') ; 解决方案二: 谢谢你的回答!!!!(*^__^*)

php中单个数据库字段多列显示

 这篇文章主要介绍了php中单个数据库字段多列显示.分行分列显示技巧,也可称为单字段分页.横向输出,需要的朋友可以参考下       今天在做项目时,遇到个问题就是把从数据库读出来的同一字段分行分列显示,就是每行显示12列,根据总记录数控制循环行数.如果是多字段很好实现,一个循环搞定,如果是一个字段循环那么就比较麻烦了,需要同时用到多个循环还有递增变量,网上也有很多Phper遇到相似的问题,今天小编把自己的解决方案分享大家. 对于同一字段循环多行和控制列显示个数,实现原理就是先用Limit限制读

mysql 表的字段名 大小写转换问题

问题描述 mysql 表的字段名 大小写转换问题 我刚建表的时候 表的字段全是大写的 现在经理让改成小写的 这么多表一个一个字段改太麻烦了 有一条sql就能解决吗? 解决方案 有一个办法是把mysql数据库连同schema一起导出到文件,然后用编辑器查找替换字段名,保存,再导入回数据库 解决方案二: 有没有数据,没有的话,导出表结构sql,word或者winhex替换小写,然后重新建表. 如果有数据,并且表很多,自己写程序,用alter table去修改.遍历表 http://database.

Python MySQLdb返回以数据库字段名为键值的字典形式结果集

使用Python MySQLdb查询出来的结果集是一个数组形式的,访问格式为数组格式,即: #...连接数据库 sql = 'select a.id, a.group,a.name, a.apk_id, a.ipa_id, b.name as ipa_name, c.name as apk_name from product a left join file_info b on a.ipa_id = b.id left join file_info c on a.apk_id = c.id;'

在sqlserver中如何根据字段名查找字段所在的表

server|sqlserver 面的sql语句在sqlserver中根据字段名查询,看哪些表包含了这个字段 复制SQL代码保存代码select   a.name   表名,b.name   列名   from   sysobjects   a,syscolumns   b   where   a.id=b.id   and   b.name='表名'  and   a.type='U'

rails在validate时,如何替换view中显示的字段名?

问题描述 在view中显示validate时的错误信息时,rails默认将字段名显示出来,比如:content: cannot be blank.我希望这里不显示Content,而是我指定的名称,怎么修改? 问题补充:夜鸣猪 写道 解决方案 可以实现.你的validation的错误提示,时在一起还是跟在后面.如果你写在后面可以用error_message_on.或者你自己可以重写一个方法,很简单的,参考下rails源码,很快就能写出来.你可以参考下帖子.http://www.iteye.com/

在WordPress中获取数据库字段内容和添加主题设置菜单_php技巧

get_option() 函数使用技巧get_option()这个函数,实际上我们在整合后台功能的时候经常会用到的一个函数,主要用来从 WordPress 博客数据库 option 表中取得我们想要的字段内容的一个函数,在目前大部分的主题中,只要是主题集成了后台控制页面,也大都用到了这个函数,虽然 WP 给了我们很多方法去临时存储我们对主题的设置,但是用比较稳定的数据库去存储主题设置还是大部分主题作者的首选. get_option() 函数的解释.用法网上还是有很多中文文献的,包括官方文档该函数

Thinkphp中mongodb数据库使用or查询

有个项目用了mongodb数据库,查询条件有and也有or,按Thinkphp官方手册,使用复合查询(_complex),getLastSql输出查询语句,发现查询条件是空的.用字符串模式查询(_string),请求字符串查询(_query)无法满足需求.估计用mongodb的用户不多,thinkphp官方对这方面支持也不够.打开thinkphp的mongodb驱动,Thinkphp/Extend/Driver/Db/DbMongo.class.php,找到protected function