2015-03-31 73 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

請指出你的錯誤行,用一些箭頭或類似 – 2015-03-31 09:26:48

+0

請顯示錯誤和黑暗或在該行將發生的評論 – 2015-03-31 09:28:02

+0

他不需要這條線,因爲連接將被自動關閉。另外'real_escape_string($ query)'?不僅此功能已被棄用,而且完全是使用它的錯誤方式。 – 2015-03-31 09:34:10

回答

0

$conn功能

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

我沒有檢查,但爲什麼它不需要'__destruct',但在其他地方需要? – 2015-03-31 09:39:12

+0

對不起,請檢查我更新的答案@ this.lau_ – 2015-03-31 09:42:24

2

不需要的$在這一行:

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

更換self::$conn->$errorself::$conn->error

訪問靜態屬性時需要$,但實例屬性不需要。

+0

謝謝@ this.lau_ – 2015-03-31 09:48:50

相關問題