Как использовать $this в соединении mysqli?

#php #mysqli

#php #mysqli

Вопрос:

я объявляю соединения mysqli в connections.php . я объявляю $this->connection вместо $connect, так как я хочу разделить каждую функцию в одном файле.

 <?php
$this->connection = mysqli_connect("localhost","root","","itdforum");

        if(mysqli_connect_errno){
            echo "Failed to connect to MYSQL: " . mysqli_connect_error();
        }
?>    
  

я пытаюсь использовать $this-connection в других функциях

 <?php
include("connections.php");
    function getSome(){

        $get_some = "SELECT * FROM table"
        $run_some = mysqli_query($this->connection, $get_some);
    }
?>
  

но ошибка отображается, как показано ниже

 Using $this when not in object context in localhostconnections.php
  

кто-нибудь знает, как это исправить? или я просто добавляю все функции только в один php-файл? Спасибо.

Комментарии:

1. Согласен с ответом миллинона: если вы хотите использовать «$this», вам нужно будет создать класс переноса. Вероятно, это будет класс служебного типа, который управляет общим взаимодействием с базой данных. Вы также можете использовать $GLOBALS[‘database’] для хранения указателя соединения вместо $this, если вы предпочитаете, чтобы это было просто.

Ответ №1:

Похоже, вам нужен класс:

 class Thing {
    function __construct(){
        $this->connection = mysqli_connect(...)
        if(mysqli_connect_errno){
            echo "Failed to connect to MYSQL: " . mysqli_connect_error();
        }
    }

    function getSome(){
        $get_some = "SELECT * FROM table"
        $run_some = mysqli_query($this->connection, $get_some);
    }

}
  

Чтобы использовать его:

 include('Thing.php');

$thing = new Thing();

$thing->getSome();
  

Комментарии:

1. спасибо за ответ . Куда добавить $thing = new Thing(); ? это внутри каждой функции или вне функции? спасибо, кстати 🙂

2. $thing = new Thing(); это распределение ресурсов, поэтому вы должны поместить его туда, где это имеет смысл для установки. Вероятно, вы хотите сделать это только один раз, поэтому, вероятно, это должно быть вне функции.