我正在尝试从checkForDuplicateUniqueId()
下面的静态方法返回一个值假设db表中存在$ uniqueValue,我们想要的新唯一值是2
$uniqueValue = 1;
public static function checkForDuplicateUniqueId($table, $columnName, $uniqueValue, $db) {
$sql = "SELECT COUNT(`$columnName`) as noOfResults FROM `$table` WHERE `$columnName` = '$uniqueValue'";
if($db->fetchOne($sql)['noOfResults'] < 1) { // not found
return $uniqueValue;
} else {
$uniqueValue++;
self::checkForDuplicateUniqueId($table, $columnName, $uniqueValue, $db);
}
如果我在if else语句中回显第一个条件的唯一值(而不是返回它),它将输出2,这意味着递归按预期发生,即
if($db->fetchOne($sql)['noOfResults'] < 1) { // not found
echo $uniqueValue;
}
这就是调用上述方法的方法:
echo Helper::checkForDuplicateUniqueId('issue_materials_log', 'date', $timeStamp, $this->db);
上面的echo语句没有输出任何内容。
答案 0 :(得分:1)
您没有从else
部分返回任何内容。这样做:
return self::checkForDuplicateUniqueId($table, $columnName, $uniqueValue, $db);