使用递归函数检查数据库

时间:2016-05-24 08:13:02

标签: php recursion

我试图做一个递归函数。它是一个简单的id创建并检查数据库中的id。如果已经创建了id,那么它应该运行该函数以创建新的id并再次进行检查。以下是代码。

public function session_order(){
    $sr_function = new sr_function();
    $session_no = (rand(0,2));
    //i have set the order_id in the db as '1'//

    $sql = "SELECT COUNT(order_id) as order_count 
    FROM src_order WHERE order_id = '".$session_no."'";

    $query = mysql_query($sql);
    $row = mysql_fetch_array($query);

    if ($row['order_count'] == 1){
        $this->session_order();
    } 

    return $session_no;
}

但是,当$ row [' order_count'] == 1时,该函数没有运行session_order()以创建另一个会话号。谢谢

1 个答案:

答案 0 :(得分:0)

生成成功的ID时,需要将其传递回调用堆栈。

if ($row['order_count'] == 1){
    $session_no = $this->session_order();
}

你为什么要用递归来做这件事?一个简单的迭代循环似乎更合理。首先,当前实现为每个ID创建重复DB查询。查询结果不是每次都应该相同吗?或者您是否并行更改ID列表?