查找最低可用功能

时间:2013-09-06 17:57:58

标签: php mysql

我正在尝试创建一个函数,它将为我的脚本返回当前用户的最低可用id。例如,假设有一个id为25的用户,那么他将能够输入10个地址,编号从250到259.所以我创建了这个函数:

protected function checkAvailIDforAddress($id)
{

    $min = $id*10;
    $max = $id*10 + 9;

    $checkAvailID = $this->_dbconnection->prepare
            ('SELECT MAX(user_id) FROM user_address WHERE user_id BETWEEN :min AND :max');

    $checkAvailID->bindParam(':min', $min);
    $checkAvailID->bindParam(':max', $max);

    $checkAvailID->execute();

    $row = $checkAvailID->fetch();

    if ($row[0] == 0) throw new Exception('Error');

    $AvailID = $row[0] + 1;

    return $AvailID;


}

我想,这个功能会很好,但后来我测试了它,我发现,如果用户输入db 3addresses,然后删除第二个,该功能仍然返回最大值。值,所以输入将被添加为第4和第2将被取消设置。

然后我用foreach循环改变了问题,并在每个循环中我向db查询,是否确定某个id,但我认为这个查询真的无效。所以我的问题是:是否有一些查询到db将返回两个值之间的第一个可用id?

1 个答案:

答案 0 :(得分:1)

讨厌这样说,但你的问题绝对没有意义。

我将指出,如果您正在寻找最低的user_id,使用SELECT MAX(user_id)与您想要的相反......

如果你想要一个范围,使用SELECT MIN(user_id)作为min,MAX(user_id)作为最大....

'SELECT MIN(user_id) as min, MAX(user_id) as max FROM user_address WHERE user_id BETWEEN :min AND :max'

如果你的结果,你现在有一个'min'和'max'值可以用来确定一系列可用的ID?