嗨大家快问我根据我的知识,下面的语句没有任何问题,因为代码执行时没有错误,但是它不是更新数据库中的信息,这里是我的模型和控制器代码
控制器:
public function update_canvas($id){
$this->check_is_validated();
$data['success'] = 0;
if ($_POST) {
$data = array(
'canvas_name' => $this->input->post('canvas_name')
);
$this->Art_m->edit_canvas($id,$data);
$data['success'] = 1;
redirect(base_url() . 'admin/art');
}else {
$data['arty'] = $this->Art_m->get_canvas($id);
$data['title'] = 'Edit your Art Works';
$data['content'] = 'admin/art/edit_canvas';
$this->load->view('templates/dashboard/template', $data);
}
}
型号代码:
function edit_canvas($id,$data)
{
$this->db->where('ID', $id);
$this->db->update('art', $data);
}
因此,当我运行脚本并尝试更新信息时,我的错误日志提供了以下内容,我无法看到问题所在,因为它需要更新ID才能更新?
记录错误:
ERROR - 2016-02-29 16:25:48 --> Severity: Warning --> Missing argument 1 for Art::update_canvas() C:\wamp\www\alisonbull\application\modules\art\controllers\Art.php 80
ERROR - 2016-02-29 16:25:48 --> Severity: Notice --> Undefined variable: id C:\wamp\www\alisonbull\application\modules\art\controllers\Art.php 87
请告知
答案 0 :(得分:1)
将我的评论作为答案写下来,因为它已被确认为正确:
问题是在没有$id
中指定的值的情况下调用函数,因为$ id的值是通过$ _POST发送的。
在CodeIgniter application / config / routes.php中,会出现如下行:
$route['art/update/(:any)'] = 'art/update_canvas/$1';
这告诉CodeIgniter,例如,当art/update/42
上的请求进入时,它应该调用艺术控制器,该控制器中的函数update_canvas
,并将42作为参数传递给控制器
当你在$ _POST请求中提交id时,这没有被正确路由,因此没有设置$ id。这会导致更新失败,因为它无法使用空ID进行更新
答案 1 :(得分:0)
根据错误消息,您可能没有传递$id
?
CodeIgniter控制器的工作方式如下:
假设您有此网址:
example.com/index.php/stack/your/url/42
url
之后的两个细分(42
,your
)将作为参数传递给函数:
class Stack extends CI_Controller {
public function your($url, $id) {
echo $url;
echo $id;
}
}