Yii获取最小可用ID

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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索代码
, connection
, model
, 数据表
, no
, php获取最大的id值
, yii实现model默认值
, Yii删除
最小
yii2 获取登录用户id、yii2 获取session id、yii2 save 获取id、yii2 获取insert id、yii2 获取最后一个id,以便于您获取更多的相关知识。

时间: 2024-12-17 21:02:59

Yii获取最小可用ID的相关文章

Yii获取当前url和域名的方法

  本文实例讲述了Yii获取当前url和域名的方法.分享给大家供大家参考.具体如下: 假设我们当前页面的访问地址是:http://localhost/CMS/public/index.php?r=news&id=1 一. 1.获取当前域名: 代码如下: echo Yii::app()->request->hostInfo; 结果:http://localhost 2.获取(除域名外的)当前URL: 代码如下: echo Yii::app()->request->getUrl

Yii获取当前url和域名的方法_php实例

本文实例讲述了Yii获取当前url和域名的方法.分享给大家供大家参考.具体如下: 假设我们当前页面的访问地址是:http://localhost/CMS/public/index.php?r=news&id=1 一. 1.获取当前域名: 复制代码 代码如下: echo Yii::app()->request->hostInfo; 结果:http://localhost 2.获取(除域名外的)当前URL: 复制代码 代码如下: echo Yii::app()->request-&g

第四范式:用最小可用产品(MVP)快速验证AI价值

本文讲的是 :  第四范式:用最小可用产品(MVP)快速验证AI价值  ,近日,AWS2017峰会在京盛大开幕.第四范式互联网业务负责人周开拓受邀出席,并发表了"打造人工智能MVP"的主题演讲,分享了企业高效.快速地向人工智能转型的宝贵经验.周开拓曾任职于淘宝网,负责在线推荐系统的设计和算法工作,加入第四范式之后,基于第四范式核心产品"先知",孵化了面向中小企业的公有云版机器学习服务,致力于完成内容推荐.电商推荐.精准营销.计算广告等关键业务的AI转型. 快速定位机

javaee-Action可以调用,但没有办法获取到“用户ID”

问题描述 Action可以调用,但没有办法获取到"用户ID" 有事相求.项目开发的. 就是我现在做着:用户管理模块 我是用SSH2框架来做的. 我想我调用"删除的Action",我要根据"用户ID"来删除. 目前状况:Action可以调用,但没有办法获取到"用户ID" 相关截图: 解决方案 地址传参:用"?"不是用"&" 解决方案二: 有传用户ID到后台去吗?

ASP获取新增记录ID值的方法

  这篇文章主要介绍了ASP获取新增记录ID值的方法,分别介绍了ASP+Access2000.ASP+SQL Server 2000两种数据库的获取方法,需要的朋友可以参考下 ASP+Access2000 1.要获取的ID值字段属性必须设为:自动编号(我们假设字段名为recordID) 2.添加记录格式:Rs.Open table,Cn,1,3 注意模式为:1,3 3.newID = rs.Fields("recordID") 4.newID为刚添加的记录的ID值 ASP+SQL Se

JQ 动态添加行,获取控件 ID

问题描述 JQ 动态添加行,获取控件 ID 做二级联动 第二个下拉框获取的Id不正确 求大神帮忙! 解决方案 给你的combotree增加id配置,在onSelect中通过options得到配置的id,而不是直接引用全局变量rowCount onSelect:function(rec){ var rowCount=$(this).combotree('options').id;///////// //....其他的代码

jsp-JSP从后台获得的数据用EL表达式只能获取第一个ID的数据

问题描述 JSP从后台获得的数据用EL表达式只能获取第一个ID的数据 后边ID为2/3/4等数据改如何获得呢 <s:iterator value="%{#request.data}" var="data3_9" > 获得数据 ${data3_9.time} 只能获得ID为0的相应的数据,接下来ID为1的话改如何获得呢 解决方案 ${data.time}/c:forEach 解决方案二: " ${data.time}/c:forEach &quo

c#-用dataGridView制作表格,在删除时获取选中行ID的时候提示输入字符串格式不正确?

问题描述 用dataGridView制作表格,在删除时获取选中行ID的时候提示输入字符串格式不正确? if (dataGridView1.SelectedRows.Count != 0) { shangpinid = Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value.ToString()); sql = string.Format("DELETE FROM shangpin WHERE ID={0}", shang

微信支付 获取预支付ID时 调用官方接口返回为NULL

问题描述 微信支付 获取预支付ID时 调用官方接口返回为NULL 解决方案 没有注册微信支付接口,所以是null.找腾讯注册. 解决方案二: 官方例子是官方例子,微信支付接口是要注册的,人家靠这个盈利.官方例子不一定非要写上具体的ID.有效的ID是一串数字. 具体含义,该网站有相应的标准文本PDF(要积分的).unifiedorder含义是唯一码,具体使用是一串数字.申请注册后就会得到. 微信支付涉及金融,是要经过银行的.该标准是银行发布的.制定者由银行.支付宝.微信支付等不同人员参与.通过后,