#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();
это распределение ресурсов, поэтому вы должны поместить его туда, где это имеет смысл для установки. Вероятно, вы хотите сделать это только один раз, поэтому, вероятно, это должно быть вне функции.