我正在尝试创建函数,该函数将为我的脚本返回当前用户的最低可用 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,然后删除 2nd,函数仍然返回 max。值,因此条目将添加为第 4 个,而第 2 个将被取消设置。
然后我用foreach循环改变了这个问题,并且在每个循环中我都对db进行查询以检查是否未设置某些id,但我认为这个查询真的无效。所以我的问题是:是否有一些对 db 的查询将返回两个值之间的第一个可用 id?