2017-09-27 13 views
-1

美好的一天!CodeIgniter:檢索單個結果行時出錯

我有此代碼獲取員工的信息。 (單結果)

控制器

public function get_employee_info() 
{ 
    $id = $this->input->post("id"); 

    $data["emp_default_info"] = $this->My_model->get_single_result("SELECT * FROM employees WHERE id = '$id' "); 

    $this->load->view("employee_info_view", $data); 
} 

模型

public function get_single_result($query_statement) 
{ 
    $query = $this->ECS_DB->query($query_statement); 
    return $query->row_array(); 
} 

視圖

foreach ($emp_default_info as $row) 
{ 
    echo $id = $row->id; 
    echo "<br/>".$lname = $row->lname; 
    echo "<br/>".$fname = $row->fname; 
    echo "<br/>".$mname = $row->mname; 
} 

錯誤:

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()


所有我想要做的是返回特定僱員的信息。我不知道爲什麼我得到這個錯誤。

請幫忙嗎?

謝謝!

+0

剛纔編輯我的答案所以你可以試試 –

回答

1

嘗試這個

控制器:

public function get_employee_info() { 
    $id = $this->input->post("id"); 

    $data["emp_default_info"] = $this->My_model->get_single_result($id); 

    $this->load->view("employee_info_view", $data); 
    } 

型號:

public function get_single_result($id) 
{ 
    $this->db->where("id",$id); 
    $query = $this->db->get("employees"); 
    return $query->result(); 
} 

查看:

foreach ($emp_default_info as $row) 
{ 
    echo $id = $row->id; 
    echo "<br/>".$lname = $row->lname; 
    echo "<br/>".$fname = $row->fname; 
    echo "<br/>".$mname = $row->mname; 
} 
+0

o/p什麼是先生,錯誤消失,但沒有結果顯示。我檢查了我的查詢,它的工作。 – Jorz

+0

你可以print_r'$ data [「emp_default_info」]'並共享結果 –

+0

@Jorz對不起兄弟錯誤我把我的模型名稱'welcome_model',但現在我替換,所以現在你可以再試一次,複製控制器並嘗試 –

0

row_array()返回結果數組。

查看:

echo $id = $row['id']; 
    echo "<br/>".$lname = $row['lname']; 
    echo "<br/>".$fname = $row['fname']; 
    echo "<br/>".$mname = $row['mname']; 
+0

嗨,先生,我試過你的代碼,但沒有任何反應。錯誤仍然存​​在 – Jorz

+0

更改ID也作爲數組 –

+0

錯誤,它返回數組的特定行而不是數組行 –

0

您沒有使用的foreach,因爲只有特定行的row_array返回數組。檢查documentation進一步的信息

echo $id = $row['id']; 
echo "<br/>".$lname = $row['lname']; 
echo "<br/>".$fname = $row['fname']; 
echo "<br/>".$mname = $row['mname']; 
+0

錯誤消失了,但沒有結果顯示。我使用if(isset($ row))而不是foreach() – Jorz

+0

如果沒有結果,那麼你沒有查詢結果。請檢查 –

+0

我的查詢工作正常先生 – Jorz

0

功能row_array回報The requested row or NULL if it doesn’t exist

所以,如果您的查詢失敗NULL將被存儲在$data["emp_default_info"]

而且您需要將array/object類型的變量傳遞給foreach,您的情況可能是NULL。首先在數據庫站點(workbench或phpmyadmin)嘗試輸出查詢。

如果查詢成功,它會返回一個行(單列)。所以,你可以循環像

foreach($emp_default_info as $val) 
{ 
    echo $val; 
} 

,因爲它只返回一個你不排需要使用loop.you可通過數組訪問 它索引直接編號爲$emp_default_info['id']等。

0

您可以嘗試使用最小編號。線。

public function get_employee_info() 
{ 
    $id = $this->input->post("id"); 
    $this->db->where('id', $id); 
    $q = $this->db->get('employees'); 
    $row = array_shift($q->result_array()); 
    echo $row['fname']; //and so on 
} 

因此,不需要添加代碼來獲取模型中的一條記錄。它已經存在於父母模型中。

1
A PHP Error was encountered 

Severity: Warning 

Message: Invalid argument supplied for foreach() 

和其因$emp_default_info null或虛假或參數不是數組

那麼你可以做如下:

要麼糾正你的模型代碼:

public function get_single_result($query_statement) 
{ 
    $query = $this->ECS_DB->query($query_statement); 
    $row = $query->row_array(); 
    if (isset($row)){ 
    return $row; 
    } 
     return array(); 
} 

OR

驗證是否其陣列

$emp_default_info是數組,因爲你叫row_array();,你不能訪問諸如$row->id

if(is_array($emp_default_info) && !empty($emp_default_info)) 
{ 

    foreach ($emp_default_info as $row) 
    { 
    echo $id = $row['id']; 
    echo "<br/>".$lname = $row['lname']; 
    echo "<br/>".$fname = $row['fname']; 
    echo "<br/>".$mname = $row['mname']; 
    } 

}else{ 
     echo "Employee Information not found"; 
} 

我們可以重新生成該錯誤是這樣,例如

$ php -r 'foreach(null as $e){}' 
PHP Warning: Invalid argument supplied for foreach() in Command line code on line 1 

/*false OR FALSE*/ 
$ php -r 'foreach(false as $e){}' 
PHP Warning: Invalid argument supplied for foreach() in Command line code on line 1 

/* Not array */ 
$ php -r 'foreach("somestring" as $e){}' 
PHP Warning: Invalid argument supplied for foreach() in Command line code on line 1 
+0

消息:調用未定義的方法CI_DB_mssql_result: :array() – Jorz

+0

@Jorz我更新的答案見 –

+0

@Jorz我剛剛閱讀源代碼,查看更新的模型代碼 –