我的CodeIgniter控制器以id作为参数传递,只是一直占用一个特定的id?

时间:2013-12-15 21:01:44

标签: php mysql codeigniter

我的用户列表提供了编辑用户和更新个人资料的链接,因为当用户点击该用户的屏幕名称时,它会转到具有相应用户ID的个人资料更新视图:

    //url:
    localhost/damcombd/admin/userprofile/userupdate/3

表单加载不错,地址栏和鼠标悬停状态栏都显示上面的链接 但实际上在控制器中,如果我用这个id从用户模型中拉出一些东西,它就会转到第一条记录或id 1 ..并且一直这样做......尽我所能!

可能是什么原因?检查了任何硬编码的ID ..但事实并非如此..

    //with this one too I create a row and get it back  like:
    $this->commonmodel->create_and_get($table,$data){
      $this->db->insert($table,$data);
      $lastid=$this->db->insert_id();
      $getback=$this->db->get($table,array('id'=>$lastid))->result_array();
      return $getback[0];

但每次第一行它返回的是什么..我不知道像这个上面的userprofile更新也在附近..它是一个bug还是什么..我根本不会得到它......我可能会: (:(请做点什么..

2 个答案:

答案 0 :(得分:0)

这可能是因为:

a)在您的路线中,您指定了一直占用的ID:

b)您的控制器输入了错误的ID

c)您的模型正在执行错误的查询。

我要做的事情:检查你在路线applocation / config /路由一个句子

    $routes['admin/userprofile/userupdate/(:num)'] = 'admin/userprofile/userupdate/$1'

也许你在1之前忘记了$; P。

然后,检查您发送的值,确保是正确的ID,在收到POST / GET值后,打印并检查该值是否是预期值(您正在编辑用户2,所以你获得id 2等等。

如果值正确,请检查从数据库中检索的内容。在您的模型中,您可以写:

echo $this->db->last_query();

并检查正在执行的SQL查询。就像我上面写的那样,告诉我们会发生什么,:D

答案 1 :(得分:0)

我提到的第二个问题在我使用

时解决了
   $this->db->get_where($table,array('id'=>$lastid));
   //actually for get the above line would have been false syntax..

我想我也会想出下一个......

我的第一个问题也解决了......确切的方式实际上...... 稍微描述一下,以便某人可能会得到帮助..

    //If u use
    $obj=$this->db->get($table,array('id'=>$lastid))->result_array(); //here then
    // it will actually do a simple get all operation and returning:
    return $obj[0] //will obviously return the very first row..try as u might.
    //so for querying with id always use:
    $this->db->get_where();