PHP PDO问题

时间:2010-12-09 14:17:05

标签: php pdo

我在网站框架中设置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']; } 
?>

2 个答案:

答案 0 :(得分:1)

如果它在函数add

  global $DBH; 

在调用query()函数之前的函数中。

答案 1 :(得分:1)

似乎该文件因任何原因未被包含在default.php中。在加载default.php之前,是否有某个启动过滤器为你做了包含?

此外,请确保您在加载default.php的路径上没有收到错误。在我看来,如果有异常,$DBH将是未定义的。您是否正在使用可能被清除的输出缓冲,然后才能看到异常的回显?您可能需要考虑将异常记录到文本文件中,以便输出缓冲不会阻止您查看正在发生的错误。