我遇到getNext()
函数问题...
如果isTaken() == true
,它会更新last
,但我不确定它是否正在调用getNext()
函数,因为函数永远不会返回$next
。
如果isTaken() == false
,则返回$next
。
有什么想法吗?
function isTaken ($id){
$sql = "SELECT asset_no FROM tb_asset WHERE asset_no='" . $id . "'";
$result = mysql_query($sql) or die(mysql_Error());
if (mysql_num_rows($result)) return true;
else return false;
mysql_free_result($result);
}
function getNext(){
$sql = "SELECT last FROM app_asset";
$result = mysql_query($sql) or die (mysql_error());
$last = mysql_fetch_array($result);
mysql_free_result($result);
$next = ++$last['last'];
if (isTaken($next)){
$sql = "UPDATE app_asset SET last='" . $next . "'";
mysql_query($sql) or die (mysql_error());
getNext();
} else {
return $next;
}
}
答案 0 :(得分:1)
正如Sable Foste指出的那样,你总是需要一份回复声明。但是,在您的情况下,您的代码似乎需要修改为
if (isTaken($next)){
//code
return getNext();
} else
return $next;
因此该函数将停止递归并在isTaken($next)
为假时返回
答案 1 :(得分:0)
您需要将变量传递回函数:
if (isTaken($next)){
$sql = "UPDATE app_asset SET last='" . $next . "'";
mysql_query($sql) or die (mysql_error());
getNext();
return $next; // this line added.
} else {
return $next;
}