我正在尝试创建一个函数,它将为我的脚本返回当前用户的最低可用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?
答案 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?