gpt4 book ai didi

php - PDOException 仅在某些用例中

转载 作者:行者123 更新时间:2023-11-29 00:52:31 24 4
gpt4 key购买 nike

我正在使用 Articles 类从我的数据库中提取关于 ..articles 的数据。我可以使用实例来插入数据、修改它,但我似乎无法从不同的页面集使用它。文件夹结构如下所示/cms/conf.php(已证明可以工作 define("DB_DSN"[..] 等)

/cms/classes/Article.php

/about.php

about.php 中,我想使用文章类中的静态函数从我的数据库中提取数据:

   public static function getById($id) {
$conn = new PDO(DB_DSN, DB_USERNAME, DB_PASSWORD);
$sql = "SELECT * FROM articles WHERE id = :id";
$st = $conn->prepare($sql);
$st->bindValue(":id", $id, PDO::PARAM_INT);
$st->execute();
$row = $st->fetch();
$conn = null;
if ($row) return new Article($row);
}

我这样调用它:echo Article::getById(17)->内容;

获取 fatal error :未捕获的异常“PDOException”,消息为“无效数据源名称” [...] PDO->__construct('DB_DSN', 'DB_USERNAME', 'DB_PASSWORD') #1

但是我可以在我的玩具文件 /cms/dataentry.php 中使用相同的方法和相同的方法调用语法 没有问题(从命令行或网络浏览器).

我想我做出了错误的环境假设? apps.php 确实有 include 'cms/classes/Article.php';

PHP 版本 5.3.2

最佳答案

当您尝试创建新的 PDO 实例时,

DB_DSN 看起来没有定义。

PHP 自动引用未定义的常量,这就是为什么您会在错误中得到这个:

PDO->__construct('DB_DSN', 'DB_USERNAME', 'DB_PASSWORD')

您可能希望 require_once 在任何需要的地方定义这些常量的文件

关于php - PDOException 仅在某些用例中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com