我正在使用一个Articles类来从我的数据库中提取关于..articles的数据。我可以使用实例来插入数据,修改它但我似乎无法从不同的页面集中使用它。
文件夹结构如下所示
/cms/conf.php
(已证明可以工作定义(“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)->content;
获取Fatal error: Uncaught exception 'PDOException' with message 'invalid data source name'
[...] PDO->__construct('DB_DSN', 'DB_USERNAME', 'DB_PASSWORD') #1
但是,我可以在我的玩具文件/cms/dataentry.php
中使用相同的方法和相同的方法调用语法(来自命令行或Web浏览器)。
我猜错了环境假设? apps.php
确实有include 'cms/classes/Article.php';
PHP版本5.3.2
答案 0 :(得分:1)
DB_DSN
实例时, PDO
看起来没有定义。
PHP自动引用未定义的常量,这就是你在错误中得到这个的原因:
PDO->__construct('DB_DSN', 'DB_USERNAME', 'DB_PASSWORD')
您可能希望require_once
在您需要的地方定义这些常量的文件