2016-03-07 54 views
-1

您好這聽起來很容易,但事情似乎是錯在這裏,選擇5類

include_once('class.DBconnnection.php');//connects to DB and works fine 

class execute extends db 
{ 

private $sqlString; 
private $selected; 
private $querySelected; 

public function select($sqlString) 
{ 
$connection=$this->getConnection(); 
$querySelected=$connection->query($sqlString); 
if($querySelected->num_rows>0){ 
$this->Fetch(); 
} 
else{ 
    echo'No Data Available'; 
    } 
} 

public function Fetch(){ 
return $querySelected->fetch_array(); 

} 

} 

上運行implimenting上面的類

try{ 

$connect=db::getInstance(); 
$conn=$connect->getConnection(); 
$execute=new execute(); 
$execute->select('select * from users limit 5'); 
while($execute->Fetch()){ 
    echo $row['username'].'<br/>'; 
    } 
} 
catch(Exception $e){ 
    echo $e->getMessage(); 
    } 

我收到的錯誤:Fatal error: Call to a member function fetch_array() on a non-object in C:\wamp\www\PHP5_Testing\classes\class.execute.php on line 20

任何人都可以幫助我解決這個問題嗎?當我使用程序mysqli它工作正常,但問題現在與oop mysqli

+0

要設置一個類屬性,你必須使用'$ this-> querySelected' – Neat

+0

這是因爲在'return $ querySelected-> fetch_array();''querySelected'不是一個對象,它的未定義變量 –

回答

0

當您使用OOP時,您必須遵守規則!

一些問題,我在你的代碼看,這裏:

變化

public function Fetch(){ 
return $querySelected->fetch_array(); 

} 

到:

public function Fetch(){ 
return $this->querySelected->fetch_array(); 

} 

$querySelected=$connection->query($sqlString);

$this->querySelected=$connection->query($sqlString);

希望這個解決您的問題。

+1

inbefore作者會說它不起作用,那是因爲他在他的'try {} catch {}'中使用了一個未定義的var'$ row'! – Neat

+1

@你好,但是,他的所有代碼都有問題! 。他不遵守規則。當他嘗試'$ execute-> Fetch()'(在$ row ...之前)時,他會面臨錯誤 – 2016-03-07 09:30:06

+0

可以確認它是一個混亂:) – Neat