php - PDOException 仅在某些用例中

标签 php mysql

我正在使用 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/

相关文章:

php - 使用 ajax 从多个模型中获取下拉依赖值

PHP MYSQL 事件调度程序,如 Musicteacherhelper.com

php - PHP CodeIgniter 中的持续时间重叠检查

php - 使用 $_SESSION 时下一页显示错误的模块

php - 如何为特定的 php 函数设置测试

php - Google Analytics(分析)无法在Sencha应用程序中运行

php - 如何使用 php 和 mysql 将创建的行值上的多个 jquery 插入到数据库中?

mysql - 为搜索字符串构建 SQL 查询

C# 使用 sql 参数现在不起作用

php - 如果字段值不存在则插入而不使用ignore,unique