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");