thinkphp 链接数据库 密码@符号怎么处理

'DB_DSN'=>'mysql://username:password@localhost:3306/DbName'@后面链接的是服务器地址但是生产环境数据库的密码中有... 'DB_DSN' => 'mysql://username:password@localhost:3306/DbName'
@ 后面 链接的是 服务器地址
但是生产环境数据库的密码中有 @ 字符
'DB_DSN' => 'mysql://user:bb@name@localhost:3306/DbName'
展开
 我来答
learneroner
高粉答主

2014-09-28 · 关注我不会让你失望
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:6616万
展开全部

你试过按照上面是否可行没有?不行的话可否考虑分项

'DB_TYPE'   => 'mysql', // 数据库类型
'DB_HOST'   => 'localhost', // 服务器地址
'DB_NAME'   => 'thinkphp', // 数据库名
'DB_USER'   => 'root', // 用户名
'DB_PWD'    => '', // 密码
'DB_PORT'   => 3306, // 端口
追问
其实我就是这么干的   我链接的是 Mongo  不过这个没关系
以下是我的配置 您看下 服务器地址账户我就不真实写了 主要看我的密码那栏
可能的问题没有描述清楚
'DB_USER' => 'root', // 用户名
'DB_PWD' => 'root@7-30', // 密码

密码中带了一个 @ 符号
追答

我测试了一下,

'DB_DSN' => 'mysql://testexper:root@1-1@localhost:3306/exper',

可以正常连接数据库

所以猜想thinkphp已经做了处理,于是查看thinkphp核心文件的Db.class.php,相关部分

/**
     * DSN解析
     * 格式: mysql://username:passwd@localhost:3306/DbName
     * @static
     * @access public
     * @param string $dsnStr
     * @return array
     */
    public function parseDSN($dsnStr) {
        if( empty($dsnStr) ){return false;}
        $info = parse_url($dsnStr);
        if($info['scheme']){
        ......
        }
    }

可以发现,用PHP函数parse_url对'DB_DSN'的内容作了处理,具体可以查看该函数

百事牛
2024-10-22 广告
百事牛是共享提供商,我们提供可靠有效的服务,适当合理的授权费有利于的继续更新优化。同样的事情,同样的方法,百事牛团队十年磨一剑,始终至聚焦在密码恢复领域,深耕于此,我们已研制出有别于其他公司的算法和运算模式, 百事牛的暴力模式加入了分布式点... 点击进入详情页
本回答由百事牛提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式