多个用户mysql php的AUTO INCREMENT值

时间:2012-02-24 21:33:57

标签: php mysql auto-increment multi-user

大家好我正在使用下面的代码来获取mysql自动增量值它的工作原理 当超过2个用户尝试同时插入第二行不同的表时,它们都会得到相同的数字并导致错误。 有没有办法处理这个问题 非常感谢您的帮助和想法 例如,当user1在insert.php上获取最后一个数字100时 在同一时间user2获取insert.php上的最后一个数字100 非常感谢你的帮助。

<input id="id" class="text-input small-input required" name="id" size="20" type="text" readonly="readonly" value="<?php $query = mysql_query( "SHOW TABLE STATUS LIKE 'a'" );
$results = mysql_fetch_object( $query );
echo $results->Auto_increment;
?>">  </p>

2 个答案:

答案 0 :(得分:4)

你在那边的客户端做了什么?

用户的ID不应该对用户可见。用户表的id列应设置为自动递增。你可以在phpMyAdmin或其他任何地方执行此操作。当用户创建帐户时,创建用户记录的INSERT将使用自动递增“id”字段自动生成新的唯一用户ID。然后,您可以在创建用户记录后直接使用mysql_insert_id()创建最后一个ID。

$query = 'INSERT INTO users (name, email) VALUES ('.$name.', '.$email.')';
mysql_query($query);
$user_id = mysql_insert_id();

http://php.net/manual/en/function.mysql-insert-id.php

答案 1 :(得分:1)

如果要插入行,请勿尝试确定自动增量值。相反,不要在insert语句中提及id列,数据库将获得下一个自动增量值,而不会引起冲突。

如果您想知道刚刚插入了哪个ID,可以在插入查询后使用mysql_insert_id()。这将为您提供刚刚插入的行的id值。