Доступ к локальной переменной базы данных из функции в том же классе

88
8

если планируете создать класс базы данных, чтобы использовать его в любом проекте php, поэтому я пишу базовый класс с небольшим кодом ниже, но при тестировании он получил сообщение об ошибке. Warning: mysqli_query() ожидает, что параметр 1 будет mysqli, null указан в C:\AppServ\www\cms\includes\cmsDatabase.php в строке 38 Хотя я создаю соединение в конструкторе класса, назначенное локальному var.

Мой код:

<?php
class cmsDatabase {

//Database Info
var $db_host = "localhost";
var $db_username = "root";
var $db_password="root";
var $db_database= "mydb";

//Database Parameters
var $database_connection ;
var $database_db ;
var $error_Message ;

public function __construct(){
$database_connection = mysqli_connect($this->db_host,$this->db_username,$this->db_password,$this->db_database) or die("can't connect to server") ;

}// end __construct

public function __destruct(){
mysqli_close($this->database_connection);
}// end __destruct

function getLastError(){
return $this->error_Message ;
}

//==================== DATABASE OPERATIONS ======================
function getConnection(){
return $this->database_connection ;
}

function selectQuery ($sql){

$result = mysqli_query($this->database_connection,$sql); //>> ERROR HERE
return $result ;

}

}//Class

?>

спросил(а) 2021-01-25T17:18:57+03:00 4 месяца, 4 недели назад
1
Решение
88

Вы должны использовать:

$this->database_connection в вашем конструкторе, в противном случае это только локальная переменная и вне области действия для вашего запроса.

Обновление: Ох и не используйте var, он устарел в PHP 5: Что делает ключевое слово PHP "var"?

ответил(а) 2021-01-25T17:18:57+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема