主页 > 程序语言 > 如何让thinkphp在获取数据库字段信息时区分数据库字段大小写

如何让thinkphp在获取数据库字段信息时区分数据库字段大小写

2022-12-06 02:49来源:m.sf1369.com作者:宇宇

解决办法:

就是修改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;

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

相关推荐

哪些编程语言是函数式的

程序语言 2024-01-14

VB编程的函数详解

程序语言 2024-01-02

c语言扑克牌问题

程序语言 2023-12-28

iphone语言与地区有什么用?

程序语言 2023-12-19

C语言程序,怎么使用,

程序语言 2023-12-17

把word嵌入到C#程序中

程序语言 2023-11-26

HTML是不是编程语言?

程序语言 2023-11-17