繁体   English   中英

获取表的最后一条记录

[英]get last record of a table

我有一个表格,可以让用户创建新记录,
在要自动增加的ID的字段中,我希望用户通过某种方式在字段值中显示此记录的最新记录号。

我在想类似的东西:

<input type="text"  value="<?php echo $myQuery['recordId'].length+1"/> 

但这是行不通的。

同样,这只是为了获取<input>的默认值

无需查找最后一个ID,并且此表单仅由一个管理员使用。

您可以通过选择找到一个加最高的ID:

SELECT MAX(id)+1 FROM table

但是就像David所说的那样,您不能保证这将是所使用的ID,因为2个人可能会同时加载该页面。

要获取与该连接相关的最后一个ID,请使用mysql_insert_id

在您的情况下,您必须在db中插入一个空记录,然后才能保证它会计数。 如果用户不继续操作,它将留下很多空的记录,但是您可以在每次加载表单时进行清理,方法是删除一个多小时前创建的没有标题值或类似内容的记录。

如果绝对需要将其作为整数,则始终可以创建仅具有一个auto_increment列的特殊表,将其插入其中,获取last_insert_id()并使用它。 这有点像甲骨文中的序列。 不使用的ID将会浪费,但是不会发生与多用户方案相关的其他问题。 以下代码是从mysql文档中复制的有关信息功能的代码。 去那里阅读此代码的承诺。

CREATE TABLE sequence (id INT NOT NULL);
INSERT INTO sequence VALUES (0);
UPDATE sequence SET id=LAST_INSERT_ID(id+1);
SELECT LAST_INSERT_ID();

现在回到我自己的话。 如果不必一定是整数,则可以使用guid 在php中有一个uniqid函数,在mysql中有一个uuid函数。 该理论说,即使每个人都始终保持独立地生成向导,每个向导也将是唯一的。

因此,这是一种实现方式:

<?php
    $query = "select uuid()";
    $result = mysql_query($query);
    $row = mysql_fetch_row($result);
    $uuid = $row[0];
?>
<input type="text" value="<?php echo $uuid; ?>"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM