我在网站框架中设置PDO时遇到了问题。
我在“system.php”中打开我的连接,这个代码包含在每个页面的开头
try {
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass,
array( PDO::ATTR_PERSISTENT => true));
}
catch(PDOException $e) {
echo $e->getMessage();
}
并在同一个文件(system.ph)上我在下面调用它:
$STH = $DBH->query('SELECT value FROM settings WHERE type="theme"');
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) {
define('THEME', 'themes/'.$row['value'].'/');
}
完美无缺!
但是,当我在"default.php"
(包含在文件中)中调用与上面相同的查询时,它会返回:
Notice: Undefined variable: DBH in /pages/default.php on line 15
Fatal error: Call to a member function query() on a non-object
in /pages/default.php on line 15
我在这里做错了什么?
default.php
<?php
$STH = $DBH->query('SELECT value FROM settings WHERE type="theme"');
$STH->setFetchMode(PDO::FETCH_ASSOC);
while($row = $STH->fetch()) { echo $row['value']; }
?>
答案 0 :(得分:1)
如果它在函数add
中 global $DBH;
在调用query()函数之前的函数中。
答案 1 :(得分:1)
似乎该文件因任何原因未被包含在default.php中。在加载default.php
之前,是否有某个启动过滤器为你做了包含?
此外,请确保您在加载default.php
的路径上没有收到错误。在我看来,如果有异常,$DBH
将是未定义的。您是否正在使用可能被清除的输出缓冲,然后才能看到异常的回显?您可能需要考虑将异常记录到文本文件中,以便输出缓冲不会阻止您查看正在发生的错误。