Подключение к базе в php 7.4 в нутри в function

Рейтинг: 0Ответов: 1Опубликовано: 12.03.2023

такой вопрос есть задача перевести сайт с пхп 5.4 на 7.4 и все вроде сделал, все вроде работает кроме кода в function { } Дело в том что тот кто писал скрипт, писал его на пхп 5, и понаписал сотни function { } внутри в которых делает запросы в базу, в 5 пхп все работает однако в 7 версии пхп внутри функции не работает соединение с базой, как я понял потому что функции изолированы, даже инклуд не работает я не могу даже заинклудить файл с подключением к БД, внутри в function { }, работает только единственный вариант если там внутри прописать наново соединение с базой. Вопрос такой, существует ли способ как то подключить базу в нутри в function { } кроме как прописать там наново соединение, так как переписывать пол скрипта выносить это все за приделы функций я наверное сума сойду))). Спасибо на добром совете.

Ответы

▲ 2Принят

Я тут вижу два варианта

передача соединения с базой данных в качестве параметра в функцию

function myFunction($db) {
  // использовать $db для выполнения запросов к базе данных
}

// создать соединение с базой данных
$db = mysqli_connect("localhost", "username", "password", "database");

// вызвать функцию, передав соединение с базой данных в качестве параметра
myFunction($db);

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

class Database {
  private $connection;

  public function __construct($host, $username, $password, $database) {
    $this->connection = mysqli_connect($host, $username, $password, $database);
  }

  public function query($sql) {
    return mysqli_query($this->connection, $sql);
  }
}

function myFunction(Database $db) {
  // использовать $db для выполнения запросов к базе данных
}

// создать экземпляр класса Database
$db = new Database("localhost", "username", "password", "database");

// вызвать функцию, передав экземпляр класса Database в качестве параметра
myFunction($db);