2014-01-30 56 views
0

最近我對CI的行爲非常惱火,可能是因爲我對小東西一無所知,現在的問題是:D。我正在做在那裏我嘗試使用的活動記錄,以獲得一個單列的應用程序,現在作爲一個優秀的程序員(我認爲)我嘗試這個 當我選擇如登錄

if($query->num_rows() == 1) 
{ 
    // do something 
} 
// now when i make an update, that also a single row i tend to use this command 
if($query->affected_rows() == 1) 
{ 
    // perform some action 
} 
// now i use this code when i've to get all entries of one single user 
if($query->num_rows() > 0) 
{ 
    // show them 
} 

現在很多時候我得到錯誤,如 「非對象調用成員函數NUM_ROWS()」任何人都可以請解釋使用什麼,何時使用以及如何使用,使代碼點火器永遠不會做了我

+0

您的錯誤是導致查詢失敗。嘗試var_dump($查詢),當你得到這個錯誤,並查看返回的對象(如果有)具有什麼屬性。你最好說'if($ query && $ query-> num_rows())'這聽起來冗長且不必要。也可能是您運行的查詢結構不合理。我們需要示例來進一步瞭解 –

+0

它可能更好或不必要。我投票贊成後者。 –

+1

這與* CI沒有任何關係,這就是PHP的工作原理。修復查詢。 –

回答

0
1.num_rows() 

NUM_ROWS( )是result helper functions,它們是針對query resultobject使用的,請注意我們don't use它就像$this->db->num_rows(),相反,我們使用它像:

$query = $this-query('query'); 

OR

$query = $this->db->get('tableName'); 

if($query->num_rows()>0){ ....} 

現在讓我們看看affected_rowS()。

2. affected_rows() 

affected_rows是query helper function,它們用於象$this->db->affected_rows()。請注意,$this->db->affected_rows()只有在有效的db write操作後纔會生成有效結果。即插入,更新和刪除。數據庫類有一個小小的黑客,它允許它在刪除操作後返回正確數量的受影響的行,因爲MySQL「DELETE FROM TABLE」返回0受影響的行。

3.$query->result() 

該函數返回查詢結果爲對象數組或失敗時爲空數組。 即如果你有不止一個結果,你必須像loop the result object

foreach ($query->result() as $row){....} 

4.$query->row() 

這個函數返回一個結果行作爲對象。如果您的查詢有不止一行,則爲returns only the first row

我希望我的解釋足夠可讀。雖然您可以在CI文檔中找到所有相關示例。