2012-01-05 18 views
2

私は会社の従業員の詳細を含むテーブルemployeesを持っています。php mysql駆動型データベースの次のID番号を生成する方法

それぞれに固有のシリアル番号が割り当てられています。新しい従業員を追加するたびに、最後に入力した従業員のシリアル番号よりも大きい1つの番号であるフォームを追加するシリアル番号が表示されます。

たとえば、データベースには12人の従業員が含まれています。最後のエントリのシリアル番号は12です。新しい従業員を追加しようとすると、自動的にシリアル番号13が割り当てられます。シリアルナンバーを入力する必要はありません。これどうやってするの?

+0

従業員のシリアル番号にauto_incrementを使用していませんか?何故なの? –

+0

私は自動増分機能を使用しています。私はそれが自動的にセリエルの番号を取得することを知っています。しかし、私の質問は、それを追加する前に "新しい従業員フォームを追加する"の次の(自動増分)値を表示する方法です。 – user1010966

+0

テーブルから次の自動インクリメントIDを取得しますか? –

答えて

3

それを確認してください:

$sql = "SHOW TABLE STATUS LIKE table_name"; 
$r = mysql_query($sql); 

$row = mysql_fetch_assoc($r); 
$next_increment = $row['Auto_increment']; 

ここで、table_nameはテーブルの名前です。

6

正確に次のauto_increment IDを予測することはできません。現在のデータベースのステータスを照会する場合(正確に1人のユーザーがアプリケーションを使用していることを除いて)です。例:フォームを開いて、DBから次のauto_increment IDを取り出し、次の予測値として13を表示します。その間、別のユーザーがフォームを開いて、あなたよりも速く保存します。他のユーザーのレコードの実際のIDは、13、あなたのもの14となります。

実際に使用したIDをフォームに表示する場合は、レコードの割り当てを行う必要がありますフォームを開き、そのIDを使用して)。何らかのステータスフィールドまたは必須フィールドを使用すると、アプリケーション内の空のレコードをフィルタリングして、完了し、未完了のレコードを定期的にパージすることができます。欠点は、ユーザーがフォームを開かずにフォームを開くと、不連続なID(例:14,15,18,20、...)が表示される可能性があるということだけです。

関連する問題