Как подключиться к базе данных с помощью PHP - PullRequest
0 голосов
/ 08 ноября 2018

Я пытаюсь подключиться к базе данных, используя конфигурационный файл, который является частью моего сайта Joomla.
Мой конфигурационный файл выглядит так:

<?php
class JConfig {
    public $dbtype = 'mysqli';
    public $host = 'localhost';
    public $user = 'xxxx';
    public $password = 'xxxx';
    public $db = 'xxxx';
    public $dbprefix = 'xxxx_';
}

Ниже приведена страница с файлом конфигурации:

<?php
include("configuration.php");

// Create connection
$conn = mysqli_connect($host, $user, $password, $db);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, navn, email FROM XXXX";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // Output data of each row
    while ($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["navn"]. " " . $row["email"]. "<br>";
    }
} else {
    echo "0 results";
}

mysqli_close($conn);

Однако я не могу подключиться к базе данных, так как получаю следующее сообщение об ошибке:

Ошибка подключения: доступ запрещен для пользователя '' @ 'localhost' (используется пароль: НЕТ)

Я думаю, что проблема может быть в том, что файл конфигурации имеет public перед всеми переменными.


Вопрос : Как мне обойтись, оставив переменные общедоступными, поскольку они нужны скрипту Joomla, но избегают ошибки?

1 Ответ

0 голосов
/ 08 ноября 2018

Предполагая, что путь правильный, вместо этого сделайте следующее:

require_once "configuration.php";

$Conf = new JConfig;

// Create connection
$conn = mysqli_connect($Conf->host, $Conf->user, $Conf->password, $Conf->db);

Проще говоря, файл конфигурации содержит класс с именем JConfig, поэтому вы должны создать экземпляр этого класса и получить доступ к его общедоступным свойствам.

другие вещи

Использование require not include, так как эта конфигурация необходима для работы остальной части этого скрипта, и include просто игнорирует отсутствующие файлы. Require выдаст ошибку и сообщит, что не так, если файл отсутствует / не найден. Кроме того, используйте require один раз, потому что вы не можете переопределять один и тот же класс несколько раз.

PS. вам не нужно () для include / require, и то же самое верно для конструкции без аргументов ... (я ленив, поэтому я не люблю печатать эти вещи)

Наслаждайтесь!

...