-1

嗨,伙计们,我正在使用下面的代码来获取 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>
4

2 回答 2

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

于 2012-02-24T21:43:55.400 回答
1

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

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

于 2012-02-24T21:44:41.623 回答