我有一个允许用户创建新记录的表单,
在自动递增的id字段中,我希望用户通过以某种方式在字段值中显示最新值+1来查看该记录的记录号。
我想的是:
<input type="text" value="<?php echo $myQuery['recordId'].length+1"/>
但这不起作用。
同样,这只是为了获得<input>
而不是必须查找最后一个ID,而且此表单仅供一位管理员使用。
答案 0 :(得分:1)
您可以通过选择它来找到一个加上最高的ID:
SELECT MAX(id)+1 FROM table
但是像David说的那样,你不能保证这将成为使用的id,因为2个人几乎可以在同一时间加载页面。
答案 1 :(得分:1)
要获取与该连接相关的最后一个ID,请使用mysql_insert_id
在你的情况下,你必须在数据库中插入一个空记录,然后才能保证它会被计算。如果用户不继续,它将留下大量空记录,但是每次加载表单时都可以通过删除一小时前创建的没有标题值或类似值的记录来进行清理。
答案 2 :(得分:1)
如果你绝对需要它是一个整数,你总是可以创建一个只有一个auto_increment列的特殊表,插入它,获取last_insert_id()并使用它。这有点模仿oracle中的序列。不使用的ID将浪费,但不会发生与多用户场景相关的其他问题。以下代码从information functions上的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; ?>"/>