0

シナリオは次のとおりです。ユーザーが登録できる小さなサイトを作成することになっています。フィールドを持つusersという名前のテーブルを使用しています

userid int unsigned auto_increment,
name varchar(50),
gender enum('m','f'),
time datetime,
joiningyear int unsigned,
primary key (userid)

新しいユーザーを挿入すると、暗号化された形式のユーザー ID を Cookie として保存してログインすることも想定されています。問題は、ユーザー ID が既に使用されている場合、明らかなように、自動的に 1 ずつインクリメントされることです。この新しい値を挿入クエリの出力として受け取りたいのですが、それをフェッチする別のクエリを追加する必要はありません。これにより、作業が簡単になります。

現在、ランダムに選択されたユーザーIDがすでに取得されているかどうかを確認し、次にエントリを挿入する2つの個別のクエリを使用しています。 Insert into users(......) values(...)

1 つのクエリでこれを達成する方法はありますか?

4

2 に答える 2

2

MySql アダプターに応じて、以下を使用できます。

mysqli_insert_idまたはPDO::lastInsertId。もありますがmysql_insert_id、次のように説明されています。

この拡張機能の使用はお勧めできません。代わりに、MySQLi または PDO_MySQL 拡張機能を使用する必要があります。詳細については、MySQL: API ガイドの選択および関連する FAQ も参照してください。

フレームワークを使用している場合は、最後に挿入された ID を返すことをサポートする必要があります。

于 2012-09-25T14:09:27.697 に答える
0

mysql_insert_id() は、新しいユーザーの最後に挿入された ID を提供します。大量の流入がない限り、これを使用しても問題ありません。

最終的に、入力情報に基づいて情報を取得するための 2 番目のクエリは問題なく、それを Cookie に保存します。

于 2012-09-25T14:10:15.150 に答える