我正在使用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;
问题是什么?身体可以帮助吗?
答案 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);
?>