我正在类中定义常量
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/