php - 无法让 php const 值在 pdo 初始化中工作

标签 php mysql class pdo constants

我正在类中定义常量

class config {
    const DB_PDO_Connect = "'mysql:host=localhost;dbname=XdbX','XuserX','XpwX'";
}

在另一个类中,我尝试创建一个新的 PDO 对象

class user {
    function login() {
        $db = new PDO(config::DB_PDO_Connect);

在那一行之后,$db 不是一个对象,所以有些东西不起作用,但如果我将其替换为;

class user {
    function login() {
        $db = new PDO('mysql:host=localhost;dbname=XdbX','XuserX','XpwX');

(从配置类复制并粘贴字符串) 它有效。

我可以 echo config::DB_PDO_Connect 这样它就可以读取它,PDO 只是不喜欢它。

最佳答案

您实际所做的是:

$db = new PDO("'mysql:host=localhost;dbname=XdbX','XuserX','XpwX'");

请注意,您实际上只传递了一个参数(格式不正确),最后两个参数丢失了。

抛开架构决策不谈(因为您确实应该有一个数据库类来管理数据库连接,并且最好将您的配置保存在自己的文件中)为什么不将这两个参数添加到您的配置类中?

class config {
    const PDO_DB = 'mysql:host=localhost;dbname=XdbX';
    const PDO_USER = 'XuserX';
    const PDO_PASS = 'XpwX';
}

然后你可以:

$db = new PDO(config::PDO_DB, config::PDO_USER, config::PDO_PASS); 

关于php - 无法让 php const 值在 pdo 初始化中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17128762/

相关文章:

php - 更改要从数据库中获取的列的名称

mysql - 即使第一个表为空mysql也选择多行

java - 将 ArrayList 传递给另一个类

java - 如何修复 'NotSerializableException: java.time.format.DateTimeFormatter' 错误

java - 不同类的 Log4J 记录器

php - Laravel 从员工表下的相关表中渲染下拉列表

php - 当一个页面由基于 php 的条目组成时,它是如何被索引的?

php - 在不绑定(bind)的情况下在 PDO 中运行查询

php - 使用LOAD DATA LOCAL INFILE将CSV添加到MySQL数据库时出现问题

php - AngularJS、PHP 和 MySQL : How to insert variables correctly using PDO?