PHP define(), похоже, не работает с include()

Я пробовал свою руку в OO PHP и в настоящее время имею три файла. У меня есть class_lib.php, который на данный момент имеет только класс базы данных, файл index.php и файл definition.php. Я хочу поместить всю информацию о моей важной базе данных в файл определений. Однако, когда я это делаю, я получаю сообщение об ошибке при попытке подключения к базе данных: "Unkown server DB_HOST". Файл моих определений:

<?php
define("DB_HOST","localhost");
define("DB_USER","root");
define("DB_PASS","password");
define("DB_NAME","database");
?>

Затем я использую их в индексном файле так:

include('definitions.php');
include('class_lib.php');

$testing = new databaseServer();

$testing->connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);

И функция, которую я использую в классе databaseServer, такова:

    function connect($host,$user,$pw,$db) {
        $this->con = mysql_connect($host,$user,$pw);
        if (!$this->con) {
            die('Could not connect: ' . mysql_error());
            }
        $this->selectDb($db);
        }

    function selectDb($database) {
        $this->db = mysql_select_db($database,$this->con);
        if (!$this->db) {
            echo "Could not Select database: " . mysql_error();
            }
        }

Любые идеи, почему это не сработает? Я также попытался поместить файл определений в include в файле class_lib, но он все еще не работает.

Ответ 1

Это должно работать нормально, и я никогда не видел, чтобы он не работал.

  • Сделайте 100% уверенным, что вложения находятся в правильном порядке (сначала необходимо загрузить параметры)

  • Сделайте тестовые выходы постоянных значений в файле "definition.php" и индексном файле

  • Сделать 100% уверенным, что вы вызываете нужные файлы

Ответ 2

Пожалуйста, проверьте, поддерживает ли ваш сервер short_open_tag это значение. Я просто включил его, и он начал работать.

Ответ 3

назовите его config.php   

if(!$link)
{

die('Failed to connect to server: ' . mysql_error());

}

$db = mysql_select_db(DB_DATABASE);
if(!$db)
{

die("Unable to select database");

}

?>

затем включить ( "config.php" ); на ваших страницах

Ответ 4

работает

<?php
define('KLINGON_SEPARATOR', '');
?>

не работает

<?php
define('KLINGON_SEPARATOR', '');

глупо... IDEA говорит "избыточный закрывающий тег"

Ответ 5

Вам просто нужно вынуть функции define файла адресатов и перенести его в исходный файл (в вашем случае "translation.php" ) и готовы к работе!

Подобно этому ошибка с функциями определения при получении строковых параметров не происходит, и вы включите уже выполненные CONSTANTS.

Я столкнулся с этой проблемой и нашел себе это решение.

Ответ 6

Ключ в этом заключается в использовании функции constant() для вытягивания значения из определенных констант:

echo constant("DB_USERNAME");