2013-09-23 27 views
0

也許我在這部分的數組過程/語法有一些誤解...Codeigniter/PHP爲什麼result()必須通過一個循環?

我想知道的是爲什麼一旦我從數據庫得到的結果我必須通過一個foreach或其他類型的循環。

比方說,我知道我將只從查詢得到一個結果:

$query = $this->db->query("MY QUERY LIMIT 1"); 

到現在我得走通這一個循環:

foreach ($query->result() as $row){ 
    echo $row->title; 
    echo $row->name; 
    echo $row->body; 
} 

有一種無需循環就可以打印項目的方法(for,foreach或其他)? Like:

$query->result()->title; 

//OR 
$query->result()[0] 

還是別的什麼?

我試過當然,上述方法都不能正常工作......

也許僅僅是一個不好的做法。這是不可能的嗎?可行?要麼...?

回答

3

如果你想獲得結果只有一個,使用row()代替
(或row_array(),如果你想把它當作一個數組,而不是一個對象)只

row()返回第一行中的數據集(無論多麼有很多,但通常在你只有一行時使用)。

$row = $this->db->query("MY QUERY LIMIT 1")->row(); 
echo $row->title; 
echo $row->name; 
echo $row->body; 

一個數組:

$row = $this->db->query("MY QUERY LIMIT 1")->row_array(); 
echo $row['title']; 
echo $row['name']; 
echo $row['body']; 

旁註,你還可以通過將其數返回特定行

$row = $query->row(5); //works also for its analogue ->row_array(5) 

僅供參考,check the manual here

+0

謝謝!這就是爲什麼!精彩。 –

0

是你只是這樣嘗試

$data = $query->result(); 
echo $data->title; 
+0

不是。這是行不通的。 –

0

試試這個

得到結果的對象

$row = $this->db->query("MY QUERY LIMIT 1")->row(); 
echo $row->title; 

希望這將有助於

+0

您是否看不到Damien更類似的答案? – allen213

相關問題