【问题标题】:AUTO INCREMENT value for multiple user mysql php多用户mysql php的AUTO INCREMENT值
【发布时间】:2012-02-24 21:33:57
【问题描述】:

大家好,我正在使用下面的代码来获取 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>

【问题讨论】:

    标签: php mysql auto-increment multi-user


    【解决方案1】:

    你到底在客户端那里做什么?

    用户的 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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2013-09-09
        • 2011-10-17
        • 2019-12-30
        • 2015-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-21
        • 2021-01-28
        相关资源
        最近更新 更多