更新:
如果在视图中我执行<?php echo $customer->first_name; ?>
,则会正确输出名字。
在同一个视图文件'value' => set_value($customer->first_name)
上不输出任何内容。
我在CodeIgniter 3中创建了一个“客户”CRUD应用程序。我有一个更新表单,我希望预先填充对应于客户的数据,该数据已存在于数据库中。< / p>
该模型如下所示:
class Customer extends CI_Model {
/*Lots
of
code*/
public function getAllCustomers($customer_id) {
$query = $this->db->get_where('customers', array('id' => $customer_id));
if ($query->num_rows() > 0) {
return $query->row();
}
}
}
控制器如下所示:
class Home extends CI_Controller {
/*Lots
of
code*/
public function edit($customer_id){
$this->load->model('Customer');
$customer = $this->Customer->getAllCustomers($customer_id);
$this->load->view('update', ['customer'=>$customer]);
}
}
在视图文件(update.php)中我有:
<?php echo form_input('first_name', '', [
'type' => 'text',
'id' => 'first_name',
'class' => 'form-control',
'value' => set_value($customer->first_name),
'placeholder' => 'First name',
]);
?>
客户的first_name虽然存在于名为“first_name”的数据库列中,但不预先填充表单。
为什么会这样?
答案 0 :(得分:0)
始终使用$this->db->last_query()
进行调试,以检查您的查询是否正确执行
如果last_query()
没有返回任何内容,请确保在'save_queries' => TRUE
app/config/database.php
您的查询可能会返回多个结果
像这样改变你的模型
public function getAllCustomers($customer_id) {
$q = $this->db->get_where('customers', array('id' => $customer_id));
log_message("error",$this->db->last_query()); //use this to get the complied query for debugging purpose
if ($q->num_rows() > 0) {
foreach (($q->result()) as $row) {
$data[] = $row;
}
return $data;
}
return FALSE;
}
如果您确定查询可能只返回一个结果,请检查$customer_id
中是否有数据
public function getAllCustomers($customer_id) {
if($customer_id){
$q = $this->db->get_where('customers', array('id' => $customer_id),1); //specify the limit if you want to get only one row
log_message("error",$this->db->last_query()); //use this to get the complied query for debugging purpose
if ($q->num_rows() > 0) {
return $q->row();
}
}
return FALSE;
}
答案 1 :(得分:0)
那是怎么做的:
<?php echo form_input('first_name', set_value('first_name', $customer->first_name),[
'id' => 'first_name',
'class' => 'form-control'
]);
?>