我在使用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;
}
}
正如Sable Foste指出的那样,你总是需要一个return语句。但是,在您的情况下,看起来您的代码需要修改为
if (isTaken($next)){
//code
return getNext();
} else
return $next;
所以该函数将停止递归并在isTaken($next)
为假时返回
您需要将变量传递回函数:
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;
}