Проброс подключения к БД в функцию php [дубликат]

102
25 августа 2019, 19:30

На данный вопрос уже ответили:

  • Не могу подключиться к mysql из функции, кто может помочь? 1 ответ

У меня имеется страница на php, к ней подключается еще две.

require_once ($_SERVER['DOCUMENT_ROOT'].'function.php');
require_once($_SERVER['DOCUMENT_ROOT'].'connectdb.php');

в connect.db подключение к базе вида

$mysqli = new mysqli('localhost', 'admin', 'password', 'base');

В функции внутри надо снова прописывать подключение к БД, можно ли как то пробросить эту переменную подключения к БД в функции, и как ее правильно вызвать изнутри?

function my_function($c)
{
}
Answer 1

Простой классс подключения к БД:

class Db{
    public static function getConnection(){
        $paramsPath = ROOT . '/config/db_params.php';
        $params = include($paramsPath);
        $dsn = "mysql:host={$params['host']};dbname={$params['dbname']};charset=UTF8";
        $db = new PDO($dsn, $params['user'], $params['password']);
        return $db;
    }
}

Применение дальше по коду:

$db = DB::getConnection();
Answer 2

Самый простой и самый правильный вариант - передавать в качестве параметра.

function my_function($mysqli, $c)
{
}

Это добавит немного писанины сейчас, но сэкономит много потраченного впустую времени в будущем.

Answer 3

1). Используйте PDO!

2). Создайте класс обёртку PDO, либо используйте существующую, коих на GitHub полно.

3). Читайте документацию!

Просто пример:

class Database {
    private $connection;
    public function __construct() {
       $this->connection = new mysqli('localhost', 'admin', 'password', 'base');  
    }
    public function dropTable($table) {
        $this->connection->query('DROP TABLE IF EXISTS $table');
    }
    ////////
}

Использование в другом классе:

class Another {
    private $database;
    public function __construct() {
        $this->database = new Database();
    }
    public function someAction() {
        $this->database->dropTable('test');
    }
}
READ ALSO
Сравнение html кода страниц на схожесть %

Сравнение html кода страниц на схожесть %

Есть некий парсер на php который собирает данные с сайтовЗадача сравнить исходные коды анализируемых сайтов на схожесть в %, для поиска сайтов...

134
PHP почему не работает if?

PHP почему не работает if?

Есть форма которая сохраняет настройки в виде массива, массив вида:

159
С++ Проблемки с задачкой

С++ Проблемки с задачкой

***Помогите решить проблему: Ввожу кол-во задач больше 2 и у меня начинается бесконечный циклЯ только обучаюсь, но не пойму в чем проблема в этой...

111