2

以下は私のモデルで、正しく動作します。現在、新入生のレコードがないため、false が返されています。ただし、コントローラーには、クエリが true を返すかどうかを確認し、クエリのすべての行をループする If ステートメントがあります。

私のモデル:

function get_schedule($Student_ID)
{
    $query = $this -> db -> query("
        getstuff");

    if($query -> num_rows() > 0 )
    {
        $sections= $query->result();        
        return $sections;
    }
    else     
    {           
        return false;
    }
}

私のコントローラー:

$Student_ID = $session_data['Student_ID'];
$query['section']=  $this->grades_model->get_schedule($Student_ID);
$sections= array();

if ($query == TRUE)
{
    foreach($query['section'] as $row)
    {
        do stuff:
    }
}

問題は、ループするデータがないため、無効な foreach ループの警告が表示されることです。クエリがfalseを返した場合、そのループを試行しないようにするにはどうすればよいですか。を追加しようとしましelseif($query == FALSE){}たが、まだ無効な foreach ループです。

その警告を抑制することはできますか?

4

5 に答える 5

2

試す

モデル

function get_schedule($Student_ID)
{
    $query = $this -> db -> query("
        getstuff");

    if($query -> num_rows() > 0 )
        {
         $sections= $query->result();       
         return $sections;
         }

    else     
         {          
        return false;
         }
}

コントローラ:

$this->load->model("Model_name");
$var=$this->Model_name->get_schedule($Student_ID);
if ($var)
 {
  foreach($var as $row)
 {
  do stuff:
 }
}

編集:

Model_name必ず自分のものに変更して、モデルでクエリを実行してください

于 2012-08-30T09:35:39.803 に答える
2

「セクション」ではありません。同じ名前を維持する必要があります$query['sections']

これを試して

 $Student_ID = $session_data['Student_ID'];
 $query['sections']=  $this->grades_model->get_schedule($Student_ID);


 if ($query['sections'] == false)
 {
  echo "error";
 }
 else
 {
  foreach($query['sections'] as $row)
  {
   do stuff:
  }
 }
于 2012-08-30T09:39:47.557 に答える
2

この行if ($query == TRUE)はあまり意味がありません。次のような内容を確認してみてください。

if (isset($query['section']) && count($query['section']) > 0) {
    foreach ($query['section'] as $row) {
        // do stuff:
    }
}
于 2012-08-30T09:39:58.710 に答える
1

このようにしてみてください

foreach($query as $row)
 {
     do stuff:
 }

あなたの $query が配列の場合。あなたの場合、モデル関数は配列を返すと思います。

また、あなたは間違いを犯しました

foreach($query['sections'] as $row)     //you did it 'section' try change it
{
    do stuff:
}

役に立つ場合は回答を受け入れます

于 2012-08-30T09:40:53.580 に答える
0

$this->db->query()SQLクエリに使用されているのは間違っています。$this->db->query('select * from getstuff');またはのいずれかを使用できます$this->db->get('getstuff');

于 2012-08-30T09:31:08.440 に答える