我试图做一个递归函数。它是一个简单的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()以创建另一个会话号。谢谢
答案 0 :(得分:0)
生成成功的ID时,需要将其传递回调用堆栈。
if ($row['order_count'] == 1){
$session_no = $this->session_order();
}
你为什么要用递归来做这件事?一个简单的迭代循环似乎更合理。首先,当前实现为每个ID创建重复DB查询。查询结果不是每次都应该相同吗?或者您是否并行更改ID列表?