如何从此静态方法返回值?

时间:2017-01-15 05:14:16

标签: php

我正在尝试从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语句没有输出任何内容。

1 个答案:

答案 0 :(得分:1)

您没有从else部分返回任何内容。这样做:

return self::checkForDuplicateUniqueId($table, $columnName, $uniqueValue, $db);