PHP define () не работает с include () - PullRequest
11 голосов
/ 18 августа 2010

Я пробовал свои силы в OO PHP, и в настоящее время у меня есть три файла. У меня есть class_lib.php, в котором на данный момент есть только класс databaseServer, файл index.php и файл definitions.php. Я хочу поместить всю мою конфиденциальную информацию базы данных в файл определений. Однако, когда я это делаю, я получаю сообщение об ошибке при попытке подключиться к базе данных: «Неизвестный сервер 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();
            }
        }

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

Ответы [ 6 ]

5 голосов
/ 18 августа 2010

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

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

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

  • Убедитесь, что вы на 100% уверены, что вызываете нужные файлы

2 голосов
/ 11 декабря 2013

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

1 голос
/ 28 июня 2017

работает

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

не работает

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

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

0 голосов
/ 12 августа 2015

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

echo constant("DB_USERNAME");
0 голосов
/ 31 июля 2014

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

Вот так ошибкас определением функций при получении строковых параметров не происходит, и вы включите уже реализованные КОНСТАНТЫ.

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

0 голосов
/ 27 декабря 2010

назовите его 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"); на ваших страницах

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