Ошибка «не удается получить доступ к пустому свойству» в php

Я запутался, где я сделал ошибку в моем php-коде ниже. Хотя я много раз просматривал свой код, но не мог найти, почему я получаю эту ошибку 'не могу получить доступ к пустому свойству'.

class DBTest{
//declare variables
private $servername = "localhost";
private $username = "root";
private $password = "";
private $database = "avn_test";
private static $conn;
private $results;

//constructor
public function __construct(){
self::$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();}
} //close constructor

public function executeQuery($query='') {
if(!empty($query)){
$query = self::$conn->real_escape_string($query);

Ошибка в этой строке:

$this->results = self::$conn->query($query) or die("Ошибка подключения к базе данных".self::$conn->$error);

if( $this->results->num_rows > 0 ) {
$rowqry = array();
while($row = $this->results->fetch_object()) {
$rowqry[]= $row; } //close of while
$rarray['returnvar'] = $rowqry;
return $rarray;
} else {
return false; } // close of else
}//close of top if
else
return false;
} //close of function

function __destruct(){
self::$conn->close();}
} //close of class

//create an object of class DBTest
$test = new DBTest();
$q= "select * from test";
$tmp = $test->executeQuery($q);

if($tmp){
foreach($tmp as $key => $value){
echo $value;}
}
else
echo 'tmp var is empty';

person Avnish alok    schedule 31.03.2015    source источник
comment
Пожалуйста, укажите строку с ошибкой какой-нибудь стрелкой или что-то в этом роде.   -  person Narendrasingh Sisodia    schedule 31.03.2015
comment
Пожалуйста, покажите ошибку и темный цвет или прокомментируйте ту строку, где это произойдет   -  person Anant Kumar Singh    schedule 31.03.2015
comment
и ему эта линия все равно не нужна, так как соединение будет закрыто автоматически. Тоже real_escape_string($query)?? Эта функция не только устарела, но это совершенно неправильный способ ее использования.   -  person laurent    schedule 31.03.2015
comment
Используйте self::conn вместо self::$conn.   -  person D4V1D    schedule 31.03.2015
comment
$conn является статическим, дорогой. Итак, как я могу использовать только self::conn   -  person Avnish alok    schedule 31.03.2015
comment
Возможный дубликат Неустранимая ошибка PHP: невозможно получить доступ к пустому свойству   -  person Suit Boy Apps    schedule 07.09.2019


Ответы (2)


В этой строке:

$this->results = self::$conn->query($query) or die("Error in database connection".self::$conn->$error);

Замените self::$conn->$error на self::$conn->error.

$ требуется при доступе к статическому свойству, но не требуется для свойств экземпляра.

person laurent    schedule 31.03.2015

Нет необходимости в $ в функции $conn

self::$conn replace with self::conn
                           ^^^^^^ 
person I'm Geeker    schedule 31.03.2015
comment
Я не проверял, но почему он не нужен в __destruct, а нужен в другом месте? - person laurent; 31.03.2015