CodeIgniter查询到数组错误结果在REST控制器中

时间:2012-02-29 00:18:19

标签: arrays codeigniter rest

我正在测试CodeIgniter的REST模块, 这是我简单的GET功能:

    function test_get()
{
    if(!$this->get('id'))
    {
        $this->response(NULL, 400);
    }

    $query = $this->db->query('select * from test');
    $users = $query->result();

    $user = @$users[$this->get('id')];

    if($user)
    {
        $this->response($user, 200); // 200 being the HTTP response code
    }

    else
    {
        $this->response(array('error' => 'User could not be found'), 404);
    }
}

它到目前为止有效,但我不确定为什么当我打开http://.../test/id/1

时我为什么会得到id 2
<xml><id>2</id><attribut1>Testdata</attribut1><attribut2>asdfasdf</attribut2><testcol>asf</testcol></xml>

当我打开http://.../test/id/2时,我得到了ID 3。

不应该http://.../test/id/1 - &gt; id 1?

1 个答案:

答案 0 :(得分:1)

这是一个一个接一个的问题。您正在为$users数组(从零开始)编制索引,但您的ID是从1开始的。当您的用户ID存在间隙时,您会遇到更糟糕的问题(您将以随机增量关闭,而不仅仅是1)。试试这个:

function test_get()
{
    if(!$this->get('id'))
    {
        $this->response(NULL, 400);
    }

    $user = $this->db->where('id', $this->get('id'))->get('test')->first_row();

    if($user)
    {
        $this->response($user, 200); // 200 being the HTTP response code
    }

    else
    {
        $this->response(array('error' => 'User could not be found'), 404);
    }
}