我的问题是,当我尝试从表中获取产品详细信息时,我单击产品名称,它将引导我进入product_detail,但是当我运行时,我显示问题是:
为 foreach() 提供的参数无效
你能看看并告诉我我能做些什么来解决这个问题吗?这是我的观点:
<?php foreach ($prod_detail as $ud) { }?>
<form method="POST" name="fr_update">
<input type="hidden" name="id_sp" value="<?php echo $ud->id_sp; ?>">
<div class="row" style="margin-bottom: 10px">
<div class="col-md-2">
<p>Tên sản phẩm</p>
</div>
<div class="col-md-4">
<input type="text" class="form-control" style="max-width: 365px;" name="ten_sp" readonly value="<?php echo $ud->ten_sp;?>">
</div>
<div class="col-md-2">
<p>Ngày sản xuất:</p>
</div>
<div class="col-md-4" style="padding-left: 0px">
<input align="left" type="date" class="form-control" style="max-width: 365px;" name="ngay_sx" readonly value="<?php echo $ud->ngay_sx;?>"/>
</div>
这是我的控制器
function prod_detail($id_sp){
$data['main_content'] = 'backend/home/manproduct/prod_detail_view';
$this->load->model('product_model');
$data['prod_detail'] = $this->product_model->getProdDetailByProdId($id_sp);
$data['rows']= $this->membership_model->getUserData();
$data['row']= $this->product_model->getProdData();
$this->load->view('includes/admin/template', $data);
}
这是我的product_model
function getProdDetailByProdId($ten_sp){
$this->db->where('ten_sp', $ten_sp);
$query = $this->db->get('products');
if ($query->num_rows() == 1) {
$data = $query->row();
return $data->$id_sp;
}
}
function getProdData(){
$this->db->where('ten_sp', $ten_sp);
$query = $this->db->get('products');
if($query->num_rows()>0){
foreach ($query->result() as $row){
$data[]=$row;
}
return $data;
}
}
您只获取一行而不是数组。
function getProdDetailByProdId($ten_sp){
$this->db->where('ten_sp', $ten_sp);
$query = $this->db->get('products');
if ($query->num_rows() == 1) {
$data = $query->row(); //here
return $data->$id_sp;
}
}
$data['prod_detail'] = $this->product_model->getProdDetailByProdId($id_sp);
这不会给你一个数组,它只给你行。.
$query->row();
此方法返回单个结果行。如果查询包含多行,则仅返回第一行。结果作为对象返回。
因此,如果您仍然想使用 foreach,则无需使用 foreach
,请使用 $query->result()
而不是$query->row()