程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> Yii獲取最小可用ID

Yii獲取最小可用ID

編輯:PHP綜合

編者注:本文已獲原創加分,請作者繼續努力!

最近使用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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved