Проблема PHP PDO - PullRequest
       10

Проблема PHP PDO

1 голос
/ 09 декабря 2010

У меня проблемы с настройкой 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 ]

1 голос
/ 09 декабря 2010

Похоже, этот файл не включается в default.php по любой причине.Есть ли где-нибудь загрузочный стриппер, который выполняет включение для вас до загрузки default.php?

Кроме того, убедитесь, что вы не получаете ошибку на пути, загружающем default.php.Мне кажется, что $DBH было бы неопределенным, если бы было исключение.Используете ли вы буферизацию вывода в каком-либо месте, которое может быть очищено до того, как вы сможете увидеть эхо исключения?Возможно, вы захотите записать свои исключения в текстовый файл, чтобы буферизация вывода не помешала вам увидеть возникающие ошибки.

1 голос
/ 09 декабря 2010

Если она находится внутри функции, добавьте

  global $DBH; 

в функцию перед вызовом функции query ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...