簡體   English   中英

如何在不使用foreach循環的情況下通過在Codeigniter中使用$ query-> result()從數據庫獲取數據?

[英]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;
   }

誰能提供替代解決方案?

我只是做了一個快速搜索。 我要睡覺了,但是你可以嘗試這樣的事情:

$query->result_array();

如果不起作用,我明天再檢查。

來源: 用戶指南也許會派上用場。

有兩個假設:要么我誤解了這個問題, 要么其他人做了。

要點: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM