在ci中使用mysqli驱动程序

时间:2016-04-15 08:34:34

标签: codeigniter mysqli

我正在使用codeigniter版本3.0.5,我想使用mysqli而不是mysql。 为此我改变了$ db ['默认'] [' dbdriver'] =' mysql'到$ db ['默认'] [' dbdriver'] =' mysqli'和var $ dbdriver =' mysql'到var $ dbdriver =' mysqli'在system / database / DB_driver.php中。现在我的模型,控制器和视图的代码是这样的:

我的控制器:

public function home()
{   
    $this->load->model('Destination_model');
    $data['main_content']="home_view";
    $data['values']=$this->Destination_model->getAllLocation();
    $this->load->view('include/template',$data);
}

我的模特:

public function getAllLocation()
{
    $query=$this->db->get('tbl_location');

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

现在我的观点:

<h3 class="search-head">Select list (select one)</h3></label>
 <?php
        $extra='class="form-control border-radius"';
        echo form_error('source');

        $place=array();
        $place[]="Select";
    foreach($values as $val){
            $place[$val->place_id]=$val->place_name;
    }

    echo form_dropdown('source', $place, set_value('source'),$extra);
?> 

我尝试从模型中访问值以在组合中加载,但它显示错误&#34;严重性:警告 消息:为foreach()提供的参数无效 文件名:views / home_view.php 行号:18  &#34;

问题是什么?身体可以帮助吗?

2 个答案:

答案 0 :(得分:3)

在您的模型中使用$ query-&gt; num_rows()代替$ query-&gt; num_rows,并且在您的视图文件中始终在foreach循环之前检查数组

if(is_array($values) && count($values)>0){
    foreach($values as $val){
            $place[$val->place_id]=$val->place_name;
    }
}

答案 1 :(得分:2)

您无法在对象上运行foreach,而不是使用$query->result()尝试使用$query->result_array()

型号:

public function getAllLocation()
{
    $query=$this->db->get('tbl_location');

    if($query->num_rows() > 0)
        {
    return $query->result_array();
    }
    return [];
}

查看:

<h3 class="search-head">Select list (select one)</h3></label>
 <?php
        $extra='class="form-control border-radius"';
        echo form_error('source');

        $place=array();
        $place[]="Select";
    foreach($values as $val){
            $place[$val['place_id']]=$val['place_name'];
    }

    echo form_dropdown('source', $place, set_value('source'),$extra);
?>