[英]How to get data from database by using $query->result() in codeigniter without foreach loop?
我剛剛開始使用CodeIgniter,並希望使用$query->result()
從數據庫中獲取數據,但沒有foreach
循環。 這是我當前的代碼:
$this->db->select('m_name');
$query1 = $this->db->get("marchant_details",1);
$rows1 = $query1->result();
但是,我不想使用這樣的foreach
循環來檢索數據:
foreach($query1->result() as $rows1)
{
$name[] = $rows1->m_name;
}
誰能提供替代解決方案?
有兩個假設:要么我誤解了這個問題, 要么其他人做了。
要點:將1
作為第二個參數傳遞給$this->db->get();
方法,它將LIMIT 1
設置為查詢,結果將只有1
行。
那么,為什么需要在單行db結果上使用循環?
如果使用$query->result();
結果將是這樣的:
Array
(
[0] => stdClass Object
(
[m_name] => Foo
)
)
要獲取m_name
值,您可以執行以下操作:
$result = $query->result();
echo $result[0]->m_name;
無論出於什么原因,如果您需要一個包含值的數字數組(就像您在循環中所做的那樣),則可以簡單地通過$name[] = $result[0]->m_name;
。
如果使用$query->result_array();
結果將是這樣的:
Array
(
[0] => Array
(
[m_name] => Foo
)
)
要獲取m_name
值,您可以執行以下操作:
$result = $query->result_array();
echo $result[0]['m_name'];
但是,如果停止限制查詢,則查詢結果中會有多行,則可以使用rows1 = $query1->result_array();
代替。 和array_map()
操作給定數組的元素:
$rows1 = $query1->result_array();
// `$row1` will be something like this:
Array
(
[0] => Array
(
[m_name] => Foo
)
[1] => Array
(
[m_name] => Bar
)
[2] => Array
(
[m_name] => Baz
)
)
使用array_map()
操作結果數組:
function getName($array) {
return $array['m_name'];
}
$array = array_map("getName", $rows1);
print_r($array);
如果您使用的是PHP v5.3 +,請執行以下操作:
$array = array_map(function($array) {
return $array['m_name'];
}, $rows1);
好吧,《 CodeIgniter用戶指南 》中有一個官方頁面, 用於生成描述各種變化的數據庫查詢結果。
$row = $query->first_row()
$row = $query->last_row()
$row = $query->next_row()
$row = $query->previous_row()
如果您使用CodeIgniter,它的魅力在於可以有效地很好地記錄在案。
我想如果可以的話,您可以進一步深入抽象層,分別不能使用DB類,而可以將選擇的類用作自定義庫或其他任何類。
那么,您為什么不滿意給定的可能性,以及您想如何生成查詢結果?
你可以這樣
$data=array();
$this->db->select('m_name');
$query1 = $this->db->get("marchant_details",1);
$data['name'] = $query1->result_array();
return $data;
以及更多信息
result_array(); // For multiple rows
row_array(); // For one row
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.