2015-08-03 31 views
0

我有两个模型为数组设置。基本上,我想要实现的是根据我设置的订单ID从数据库中获取第一个下一个条目。获取数组中的下一个元素(PHP)

因此,我发送ID 4,我找到ID为4的订单ID为15的条目。然后,我想获取它后面的第一个下一个项目,它应该有订单ID 16.我尝试递增在订单ID之后加+1,但它不起作用。

用我目前的代码,我得到了两次相同的数组。

function first($id_domain) { 
     $this->db->select ('*'); 
     $this->db->from ('domains'); 
     $this->db->where ('id_domain', $id_domain); 
     $result = $this->db->get(); 
     return $result->result_array(); 

    } 

    function second ($result) { 
     $this->db->select ('*'); 
     $this->db->from ('domains'); 
     $this->db->where ('order', $result[0]['order'] + 1); //code that should get me the next entry, but doesn't work... 
     $this->db->where ('parent', $result[0]['parent']); 
     $result2 = $this->db->get(); 
     return $result2->result_array(); 

    } 
+0

你尝试打印' $ result [0] ['order']'来检查它是一个数字还是你的号码? –

+0

是的,它是回声2. – Dragos

+0

您收到数据库错误还是只有0结果?如果是的话,确实有ID 3的订单?此外,'$ result [0] ['parent']'条件是指什么? – Kez

回答

0

的问题是不是因为你的代码,但它可能是由于在数据库中的记录:他们要么是不存在的特定条件或您的匹配是不完全正确的。

如果您正在使用CodeIgniter我建议你改变你的second功能如下:

function second($result) { 
    $whereConds = array(
     'order' => intval($result[0]['order'] + 1), 
     'parent'=> $result[0]['parent'] 
    ); 
    //if you don't have firephp print/echo/var_dump as you normally would 
    $this->firephp->log($whereConds); 

    $query = $this->db->get_where('domains', $whereConds); 

    $this->firephp->log($this->db->last_query()); 
    if ($query->num_rows() <= 0) { 
     $this->firephp->log('No results'); 
     return array(); 
    } else { 
     return $query->result_array(); 
    } 
} 

这样你就可以准确地跟踪问题。

顺便说一句,你也可以(只是与家长的条件也许,因为你知道,它们是顺序排列)使用$offset参数在get_where拿到一张ID:

$limit=1; 
$offset=intval($result[0]['order'] + 1);//adjust depending on the parent condition below: it can be just an integer such as 2 
$whereConds = array(
    'parent'=> $result[0]['parent'] 
); 
$query = $this->db->get_where('domains', $whereConds, $limit, $offset); 
相关问题