Я пытаюсь настроить соединение db для инструкции mysqli_connect $ dbc. Я это работает в моем сценарии со следующим:Настройка соединения db с использованием переменных из другого файла
DEFINE ('DB_USER','myName';
DEFINE ('DB_PASSWORD','somePass123';
DEFINE ('DB_HOST','localhost';
DEFINE ('DB_NAME','sitename';
// make the db connection
$dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
Я тогда отвечал на вопрос о SO о безопасности и наилучшей практике и был сообщено, что если переменные подключения (пароль, хост, имя_бд, пользователи) существует в других странах отдельный файл конфигурации базы данных, который я должен назвать переменными для подключения оттуда.
Вот соответствующий отрывок из файла в конфигурации/базы данных/PHP
$config['default'] = array(
'benchmark' => TRUE,
'persistent' => FALSE,
'connection' => array(
'type' => 'mysqli',
'user' => 'myName',
'pass' => 'somepass123',
'host' => 'localhost',
'port' => FALSE,
'socket' => FALSE,
'database' => 'sitename',
),
'character_set' => 'utf8',
'table_prefix' => '',
'object' => TRUE,
'cache' => FALSE,
'escape' => TRUE
);
Так я тогда попытался это:
DEFINE ('DB_USER','$config['default']['connection']['user'])';
DEFINE ('DB_PASSWORD',$config['default']['connection']['pass']);
DEFINE ('DB_HOST',$config['default']['connection']['host']);
DEFINE ('DB_NAME',$config['default']['connection']['database']);
// make the db connection
$dbc = @mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME)
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
который произвел следующую ошибку, когда я пытался загрузить страницу : "Неопределенная переменная конфигурации"
затем я попытался это:
$dbc = @mysqli_connect(
$config['default']['connection']['host'],
$config['default']['connection']['user'],
$config['default']['connection']['pass'],
$config['default']['connection']['database'])
OR die ('Could not connect to mysql: ' . mysqli_connect_error());
// Set the encoding
mysqli_set_charset($dbc, 'utf8');
// set the query variable
$query = "SELECT MAX(rating_date)
AS last_date
FROM rating
WHERE incident_id = $incident_id;";
//connect and run the query
$result = mysqli_query($dbc, $query);
echo $result->fetch_object()->last_date;
?>
Который затем произвел следующую ошибку: «Фатальная ошибка: Вызов функции члена fetch_object() на не-объект в ...»
Я не 100% уверен, что это говорит мне , Вчера я узнал, что не удается выполнить эхо SQL-запрос в php напрямую, потому что это объект, поэтому я разрезал n, вставил часть «echo $ result-> fetch_object() -> last_date;» который работал.
Кажется, что теперь, когда я пытаюсь использовать переменные из config, а не просто определять их в функции, я не могу подключиться, возможно, из-за проблемы с областью?
Файл с соединением $ DBC находится в папке/темами MyName/Views/отчеты/detail.php
Файл с детальной конфигурации массива базы данных в приложении/Config/database.php
Похоже, проблема с переменной областью?
Что было бы лучшей практикой при создании переменной $ dbc? Как вызвать переменные из базы данных.php, когда он существует в другой директории, чем файл, где я его называю? Должен ли я включать() весь файл?
Включенный вами файл конфигурации? – Mathlight
зачем определять константы на основе переменных? Это похоже на то, чтобы перевезти груз лошадей в конном экипаже ... Если вы собираетесь использовать переменные для хранения данных конфигурации, просто используйте эти переменные напрямую. –
@Mathlight no. Должен ли я (извините, если это звучит глупо, вы, вероятно, можете догадаться о моем опыте работы с PHP) –