2017-09-27 17 views
-1

おはよう!CodeIgniter:1つの結果行を取得する際のエラー

私は従業員の情報を取得する際にこのコードを使用しています。 (単一の結果)

コントローラ

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; 
} 

ERROR:

A PHP Error was encountered

Severity: Warning

Message: Invalid argument supplied for foreach()


私がやりたいことのすべては、特定の従業員の情報を返すことです。なぜこのエラーが出るのか分かりません。

お願いします。

ありがとうございました!

+0

はちょうど今私の答えを編集した例については、このように、このエラーを再生成することができます$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"; } 

のようにアクセスすることはできません配列でありますだからあなたは試みることができます –

答えて

1

この

コントローラをお試しください配列

ない$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();と呼ばれるので、あなたは我々が

$ 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

はエラーを表示しましたが、エラーは表示されませんでした。私は私の質問をチェックし、それは働いています。 – Jorz

+0

あなたはprint_r '$ data [" emp_default_info "]'と結果を共有することができます –

+0

@Jorz申し訳ありませんbro bymistake私は私のモデル名 '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

配列が –

+0

であるとIDを変更すると、行の配列ではない特定の行の配列が返される –

0

あなたが唯一の特定の行のrow_array返す配列として使用するforeachを持っていません。さらに詳しい情報

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

エラーは消えたが、結果は表示されない。 foreach()の代わりにif(isset($ row))を使用しました – Jorz

+0

結果がない場合はクエリの結果がありません。 –

+0

私のクエリが正常に動作していることを確認してください – Jorz

0

機能row_array戻りThe requested row or NULL if it doesn’t existためdocumentationをご確認ください。

クエリが失敗した場合、NULL$data["emp_default_info"]に格納されます。

そして、array/objectの変数をforeachに渡す必要があります。その場合、NULLかもしれません。データベースサイト(workbenchまたはphpmyadmin)から出力クエリを先に試してください。

クエリ成功は、それが(単一行)の行が返されます

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

のような。だからすることができますループ、それはあなたがloop.youを使用する必要がいけない1行のみのアレイで それにアクセスすることができます返すため直接インデックスとして$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 
} 

Modelで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; 
} 
1
A PHP Error was encountered 

Severity: Warning 

Message: Invalid argument supplied for foreach() 
+0

メッセージ:未定義のメソッドを呼び出すCI_DB_mssql_result: :array() – Jorz

+0

@Jorz私は答えを更新 –

+0

@Jorzを参照してください私はちょうどソースコードを読んで、更新されたモデルコードを参照してください –

関連する問題