Welcome 微信登录

首页 / 网页编程 / PHP / Yii获取最小可用ID

Yii获取最小可用ID2016-12-05投稿人: zsh1990

编者注:本文已获原创加分,请作者继续努力!

最近使用Yii做东西。Mysql数据表使用了自增ID,这样用起来很方便,但也有一个我不希望出现的现象:假设有10条记录,1,2,3,4,5,6,7,8,9,10, 从1到9这9条记录删除了。以后再插入记录时,因为是自增ID,新的ID号就是11了,前面产生了很多空余的可用ID。

所以只能自己写代码来解决这个问题,应该算是比较笨的方法,但是我的目的达到了,处理思路如下:

(1)首先对表的记录数进行判断,如果记录为0,说明是空表,则最小可用ID为1;

(2)检索出表的最大ID号,假设这个值是$no,把1到$no之间这个序列进行遍历,如果其中的一个值在数据表中没有记录,那么这个值就是最小可用ID,跳出循环;

(3)如果1到$no之间没有最小可用ID,则最小可用ID为$no+1;

示例代码如下:

//$no为可用ID号
$model = new Message();
if ($model->count() == 0) {
$no = 1;
} else {
$connection = Yii::app()->db;
$sql = "select max(id) from {{Message}}";
$command = $connection->createCommand($sql);
$result = $command->queryAll();
foreach ($result[0] as $key => $val) {
$no = $val;
}
$no = (int) ($no);
if ($no == 1) {
$no = 2;
} else {
for ($i = 1; $i < $no; $i++) {
$info = $model->findByPk($i);
if (count($info) == 0) {
$no = $i;
break;
} else {
$no = $no + 1;
}
}
}
}
//后续代码,省略
URL: http://www.bianceng.cn/webkf/PHP/201612/50470.htm