Неизвестная ошибка при подключении к MySQLi и проблема с ООП

162
11 сентября 2018, 05:50


PHP, OOP, MySQL
У меня проблема с подключением к базе данных MySQL, после того как данные для mysqli_connect() поместил в объект, возвращаемый из статической функции из класса. Ранее, когда хранил данные для mysqli_connect() в переменных, и после писал $link = mysqli_connect($host,$username,$password,$database); всё работало.
Сейчас я написал класс, в нём статическую функцию возвращающую объект с данными: Класс:

<?php
class aaa114net
{
    static function getMysqliLink(){
        $host = 'localhost';
        $username = 'username';
        $password = 'password';
        $database = 'database';
        $data = (object)["host"=>$host,"username"=>$username,"password"=>$password,"database"=>$database];
        return $data;
    }
}

Скрипт вызова:

<?php
require('class/net.myclass.php');
$data = aaa114net::getMysqliLink();
$link = mysqli_connect($data->host,$data->username,$data->password,$data->database);
$query = "SELECT `столбец` FROM таблица WHERE `столбец`='".$variable."'";
$request = mysqli_query($link, $query) or die("Ошибка " . mysqli_error($link));
$result = mysqli_fetch_array($request);
mysqli_free_result($result);
mysqli_close($link);
?>

Возвращает: Ошибка и больше ничего. Помогите пожалуйста, в чём моя ошибка ?

P.S. PHP v.7.2.1, данные для входа базу данных указаны верно, то что в переменной $query работало и сейчас работает на сайте (я на локальном хосте провожу тесты, использую MAMP Pro).

Answer 1
<?php
class aaa114net {
    private static $connection;
    public static function getDb() {
        if (!self::$connection) {
            $dbConfig = require(__DIR__ . '/../config/db.php');
            /*
            <?php
            return [
                'hostname' => 'localhost',
                'database' => 'test',
                'username' => 'root',
                'password' => '',
            ];
            */
            self::$connection = new PDO("mysql:host={$dbConfig['hostname']};dbname={$dbConfig['database']}", $dbConfig['username'], $dbConfig['password']);
        }
        return self::$connection;
    }
}
$query = "  SELECT 
                * 
            FROM `users` 
            WHERE `user_id` = :bind";
$sth = aaa114net::getDb()->prepare($query);
$sth->bindParam(':bind', $variable);
$sth->execute();
print_r($sth->fetchAll());
READ ALSO
Laravel Passport

Laravel Passport

Занимаюсь разработкой API на Laravel для мобильного приложения и решил использовать Passport для авторизацииНе совсем разобрался в некоторых моментах

186
Отправка файла частями для YandexSpeechKit с помощью curl php

Отправка файла частями для YandexSpeechKit с помощью curl php

Как с помощью php реализовать загрузку файла для YandexSpeechKit частями?

208
Curl, авторизация с переадресацией

Curl, авторизация с переадресацией

Нашел информацию что, curl не следует переадресации, если это мета теги или JSПодскажите пожалуйста, как тогда можно реализовать, что бы после...

189
phpmyadmin не отрабатывает, то 403, то 404, история

phpmyadmin не отрабатывает, то 403, то 404, история

Коллеги, развернул сайт на CentOS с помощью Virtualmin / Webmin, Доустановил в скриптах - phpmyadminНо дело наверное не в этом, это для полноты картины

204