2012-02-24 8 views
-1

こんにちは、私は以下のコードを使用してmysqlの自動増分値を取得しています。 2人以上のユーザーが同時に2つの異なるテーブルを挿入しようとすると、同じ番号となり、エラーの原因となります。 user1がinsert.php に最後の数100を取得USER2同時にでinsert.php に最後の数100を取得するとき、この問題にあなたの助けを おかげでたくさんあり、例えばアイデア を処理するために、どのような方法がありますあなたの助けに感謝します。複数ユーザーのAUTO INCREMENT値

<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

クライアント側で何をしていますか?

ユーザーの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

あなたが行を挿入したい場合は、自動インクリメント値を決定しようとしないでください。代わりに、INSERTステートメントのidカラムについては言及しないでください。データベースは、競合を引き起こすことなく、次の自動インクリメント値を取得します。

挿入されたIDを知りたい場合は、挿入クエリの後にmysql_insert_id()を使用できます。これはちょうど挿入された行のid値を与えます。

関連する問題