2013-07-12 112 views
0

在下面的AnimalSpecies中是一個名爲Values的列。我希望以數組的形式檢索此列的元素。非常基本!以下是如何返回一個空數組?我試過很多東西,當我只是直接的mysql使用爲什麼codeigniter mysql返回一個空數組

SELECT Values FROM AnimalSpecies WHERE 1

我似乎得到了正確的事情。

型號:

//retrieve dropdown options 
public function get_options($table) { 

    $this->db->select('*'); 
    $this->db->from($table); 
    //$this->db->where('Options'); 

    $query = $this->db->get(); 
    //print_r($query); 

    if ($query->num_rows() > 0) 
    { 
     $data = $query->row_array(); 
     print_r($this->db->last_query());die(); 
     return $data; 
    } 
} 

控制器:

public function upload_page() 
{ 
     $this->load->model('data_model'); 
     $species = $this->data_model->get_options("AnimalSpecies"); 

}

我已經想通了如何讓 「選項」 列中的值作爲一個數組,雖然我脫光關閉mysql輸出的一部分,所以它有點笨拙。沒有for循環,我得到每個列值的數字索引。

public function get_options($table) { 

    $this->db->select('*'); 
    $this->db->from($table); 

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

    if ($query->num_rows() > 0) 
    { 
     $data = $query->result_array(); 

     for ($i=0; $i < count($data); $i++) 
     { 
      $options_array[] = $data[$i]['Options']; 
     } 

     return $options_array; 
    } 
} 
+0

在處理'row_array()'來查看你得到的東西之前,你是否在'$ query'結果(或'var_dump()')上試過'print_r()'?此外,嘗試顯示通過在return語句前添加'print_r($ this-> db-> last_query()); die();'執行的實際查詢。 – Wolf

+0

我強烈建議您在處理數據之前總是先執行$ query-> num_rows()> 0測試,除非您完全確定至少會有一行 –

+0

print_r給出CI_DB_mysql_result對象([conn_id] =>資源ID#31 [result_id ] =>資源ID#37 [result_array] => Array()[result_object] => Array()[custom_result_object] => Array()[current_row] => 0 [num_rows] => 7 [row_data] =>)arrayarray (1){[「Options」] => string(0)「」} – MysticalTautologist

回答

0

這應該這樣做(由最後的評論判斷):

public function get_options($table) { 
    return $this->db->select('Options') 
    ->get($table) 
    ->row_array(); 
} 

如果沒有數據的情況下,將返回False,否則,你會得到一個數組。

如果你只需要在選項的值,你可以使用:

public function get_options($table) { 
    return $this->db->select('Options') 
    ->get($table) 
    ->row() 
    ->Options; 
} 

這將返回任何選項的值是第一排,但如果沒有行被發現,它可能會引發錯誤。

+0

感謝您的精彩迴應!它比我目前的soln更乾淨,但它不起作用。您的最終解決方案僅返回「選項」列的第一行。我需要將所有「選項」列作爲數組返回。我這樣做的方式有點笨拙,但可以工作,並且已將它包含在上述編輯中。 – MysticalTautologist

+0

我看到了,那麼你需要使用'result_array()'而不是'row_array()'(只是第一個例子,這不適用於第二個) – Shomz

相關問題