在mysql表的最后一行添加1

时间:2011-04-29 21:52:06

标签: php mysql

您好我正在尝试选择表格中的最后一个ID,然后将值加1。我选择最后一行只是发现问题是我遇到+1的问题我认为这是因为它是一个阵列但我不确定。

$result = mysql_query("SELECT `id` FROM `users` ORDER BY `id` DESC LIMIT 1");
$row = mysql_fetch_row($result);
$pin = $row[0]+1;

echo ($row[0]); //returns the id
echo ($pin);    // returns null

对此的任何想法都会很棒。

4 个答案:

答案 0 :(得分:3)

试试这个:

SELECT max(id) + 1 from users

但是如果你正在进行插入,只需抓住mysql_last_insert_id()找出刚才插入的内容。否则你会遇到并发问题。

您的ID设置为AUTOINCREMENT正确吗?您永远不应该永远不会永远不会自己分配主键。这是数据库服务器的工作。

答案 1 :(得分:3)

您应该使用mysql_insert_id()

printf("Last inserted record has id %d\n", mysql_insert_id());

这将显示最近插入的ID。

答案 2 :(得分:1)

有几种可能的解决方案。鉴于上面已有的代码,最简单的可能是:

$pin = intval($row[0])+1;

也就是说,代码中有明确的改进/优化,其他答案在这里触及。但是,如果你正在寻找从你拥有的东西到你想要的最短路径,那么一个改变可能就是它。

答案 3 :(得分:1)

在实际插入发生之前,您无法可靠地确定下一个插入的ID。最后一条记录可能已被删除,但这不会更改表的auto_increment值。此外,如果发生两个(或更多)并发请求,则两者都可以检查最后插入的id并找到相同的值。插入行时,两者都会得到不同的ID ......