2015-03-31 7 views
-1

Я смущен, когда я сделал ошибку в моем 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("Error in database connection".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'; 
+1

Просьба указать вашу строку с ошибкой или как-то вроде этого –

+0

Пожалуйста, сообщите об ошибке и оставьте комментарий или прокомментируйте эту строку, где это произойдет –

+0

, и он не нуждается в этой строке, так как соединение будет закрыто автоматически. Также 'real_escape_string ($ query)' ?? Эта функция не только устарела, но и является неправильным способом ее использования. –

ответ

0

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

self::$conn replace with self::conn 
          ^^^^^^ 
+0

Я не проверял, но почему это не нужно в '__destruct', но необходимо в другом месте? –

+0

извините мой обновленный ответ @ this.lau_ –

2

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

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

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

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

+0

тонна благодарения @ this.lau_ –