我想为添加到我的数据库的每个项目设置一个唯一的ID,类似于Drupal节点。只是不确定在向数据库添加新项目时我怎么知道下一个数字是什么。 MySQL的声明是:
$query = "INSERT INTO `HERDSIRES`(uid, name, color, gender) VALUES ( VALUE of next uid, '$name', '$color', '$gender')";
我想我需要在INSERT之前查询数据库,找出最后一个uid的值然后再加1,然后将其保存到变量中。我不确定这是不是最好的方式。
有什么想法?
答案 0 :(得分:6)
如果数据库将列设置为自动生成,则只需在null
语句中传递INSERT
,MySQL将完成剩下的工作。
例如,在指定了auto_increment
的主键列上。
你的意思是:
INSERT INTO `HERDSIRES`(uid, name, color, gender)
VALUES ( null, '$name', '$color', '$gender')";
或者你可以完全省略它,因为你无论如何都在枚举字段:
INSERT INTO `HERDSIRES`(name, color, gender)
VALUES ( '$name', '$color', '$gender')";
编辑:以下是如何使用PHP从表中获取最后一个自动生成的ID:
$query = mysql_query('INSERT INTO ...');
$new_row_id = mysql_insert_id();
// do something with $new_row_id
答案 1 :(得分:2)
你有什么理由不能使用autoincrement
吗? SQL会自动为您处理。
答案 2 :(得分:1)
将表中的字段设置为自动递增,然后在插入时不设置字段。
答案 3 :(得分:1)
看看:
How to Get the Unique ID for the Last Inserted Row
对于LAST_INSERT_ID(),最多 最近生成的ID保留在 服务器基于每个连接。 它不会被其他客户更改。 如果你更新,它甚至没有改变 另一个AUTO_INCREMENT列,带有 非神经价值(即一个值 不是NULL而不是0)。运用 LAST_INSERT_ID()和AUTO_INCREMENT 同时从多个列 客户完全有效。每 客户端将收到最后插入的 客户端的最后一个语句的ID 执行。