码迷,mamicode.com
首页 > 数据库 > 详细

thinkPHP 远程数据库和远程连接数据库表名大小写混合

时间:2018-09-13 16:27:22      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:comm   ted   连接数   3.2   image   解决问题   置换   混合   bubuko   

做项目的时候,遇到了一个问题,远程连接数据库获取表时,如果数据库表示混合型的大小写,就会出现bug。一般第一个大写字母会变成小写,中间的大写字母会变成“_”,查了好多资料,才知道是thinkphp本身的bug(我用的thinkphp是3.2版本的),主要是由这两点组成

1.ThinkPHP/Common/functions.php 中,第457行的原因

技术分享图片

2.ThinkPHP/Library/Think/Model.class.php中第1490行的原因

技术分享图片

现在我们知道了问题所在,现在开始解决问题吧。

首先远程连接数据库

1.在配置模板中添加数据库的账号和密码,也可以添加在需要用的版块中,这里就不多讲了

2.连接数据库,如下图所示

技术分享图片

12,13行是我的数据库账号和密码,第15行$ip是我需要远程的电脑(远程连接数据库,我是通过wifi进行连接的,首先要连接同一个局域网下,然后确定是否可以ping的通要远程连接的电脑),第16行是连接数据库的命令,ir是我的数据库名#utf-8是防止数据库名为中文的兼容,一般都是中文。17行是获取哪一个数据表,第18行是显示数据库的具体信息,第19行是判断是否获取数据,如果失败则返回false,如下图所示:

  技术分享图片

  技术分享图片

dump($re);显示的第bool(false),表示并未获取到远程的信息,["name":protected]=string(11) "ActionLists"是我们要查询的数据库表,但是数据库默认的是获取trueTableName的数据库,很明显数据库已经被破坏了,不想乱改配置文件,因为害怕会影响别的文件,可以这样写,获取tableName的值,然后把TrueTableName的strtolower函数去掉即可。如下图所示

本地连接数据库可以写成

技术分享图片

也就是把要连接的数据库的位置换一下,即修改第16行的位置。如上图所示:不赋值给["name":protected] ,而赋值给["tablePrefix":protected]即可,然后修改ThinkPHP/Library/Think/Model.class.php中的1941行即可,如下图所示

  技术分享图片

把strtolower去掉即可,就可以显示打印的内容了,如下图所示:

  技术分享图片

如上图所示:把值赋值给了["tablePrefix":protected],["trueTableName":protected]为正常,可以使用表名混合大小写了

技术分享图片

这样问题就解决了

thinkPHP 远程数据库和远程连接数据库表名大小写混合

标签:comm   ted   连接数   3.2   image   解决问题   置换   混合   bubuko   

原文地址:https://www.cnblogs.com/wsw8384/p/9640592.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!