您好我正在尝试选择表格中的最后一个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
对此的任何想法都会很棒。
答案 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 ......