2013-10-29 73 views
-1

這是我想象的一種類型,可以添加額外的查詢條件,但它不起作用。我的問題是,如果可以這樣做,如果是 - 如何?函數在其他函數中添加額外的mysql查詢

class query 
{ 
function add($y) 
{ 
if($y) { return 'y'; } 
} 
function query() 
{ 
$query->select('*'); 
$query->from('table'); 
$add = $this->add($y); 
if($add) { $query->where('smt = smt'); } 
} 
} 

Call類:

$items = new Query; 
$items->add('y'); 
$items->query(); 
+0

請解釋什麼是不工作,最好提供確切的腳本輸出。 PS。你的類方法缺少可見性聲明,你應該閱讀[here](http://www.php.net/manual/en/language.oop5.visibility.php)。 –

+0

額外的查詢沒有被調用,然後我使用這個函數'$ items-> add('y');' – user1876234

回答

1

試試這個...

class query { 
private $y = null; 

function $add($y=null) { 
if($y!=null) 
$this->y = $y; 

return $this->y; 
} 

function query() 
{ 
$query->select('*'); 
$query->from('table'); 
$add = $this->add(); 
if($add) { $query->where('smt = smt'); } 
} 
} 

Call類:

$items = new Query; 
$items->add('y'); 
$items->query(); 
1

你的方法查詢::查詢()有這樣一行代碼:

$add = $this->add($y);

但沒有定義$ Y,所以你if檢查在查詢:: add()方法不返回任何東西。因此,$ add是null,所以最後的$query->where()未被調用。

如果您需要在各種實例方法調用中保留值,請將值存儲在實例變量中或將它們作爲方法參數傳遞。