PHP+MySQL勉強中のものですがよい方法を教えてください。
表題のように会員登録のサイトを作っているのですが
いわゆる会員番号をダブらないようにして入力時に自動的に作成したいのですが
一般的にはどのような方法があるのでしょうか?
私としてはDBの会員登録とは別にシリアル番号だけを書き換えていくテーブルを作って新規入力時に値を拾っていく方式にしたいのですが。
会員テーブル(会員番号,会員名)
シリアルテーブル(シリアル番号)
に対して
会員テーブルに会員名を入力
↓
シリアルテーブルからシリアル番号を読込む
↓
会員テーブルに(シリアル番号+1&5桁の数字,会員名)を登録
(5桁の数字は他で使うものでユニークな値ではないです)
↓
シリアルテーブルに(シリアル番号+1)として更新
↓
シリアルテーブルのシリアル番号が9999になったら1に戻す
という処理をしたいのですが
処理自体はできるのですが
当然PHPのコードが素人目にみても余りきれいではありません。
一般論でかまいませんので皆さんならどうされるか等
ご意見をうかがえないでしょうか?
よろしくお願いします。
環境はPHP5+MySQL5です。
No.1
- 回答日時:
質問の意図がよくわからないのですが、
単純に連番で会員番号をとればすむのでは?
会員番号自体はSQLでオートインクリメントしたidを
だしてやれば済むような気が・・・
やりたいことが違うのかなぁ?
この回答への補足
ややこしし書き方でごめんなさい。
おっしゃるとおりMSアクセス等でインターフェイス作ってるときは
オートインクリメントしてるのですが
今回はPHP使ってブラウザから入力することに挑戦していまして
最初の登録ページで一旦会員登録を終わらせてDBに書き込みます。
そして会員番号をセッションで保持して
(会員番号はKeyにしてるので同じ値を運びます。)
次の頁で別項目を入力するのですが
オートインクリメントだとうまくオートインクリメントで入力された値を拾えなかったんのです。
初期登録Web画面(会員番号,会員名,5桁の数字)
↓
↓ submit →会員登録T(会員番号,会員名)入力
↓
会員情報登録Web画面(会員番号,5桁の数字)
↓
↓ submit →会員情報T(会員番号,5桁の数字)入力
↓ ↑
↓ この時にオートインクリメントで入力した値の拾い方がわからない
次の登録Web画面へ続く...
(登録画面を分けている理由は実際には登録する項目が多すぎるからです)
ということでして
ならば会員番号を最大値+1で自分で作ってしまい
ついでに5桁の数字も会員番号に混ぜて運用してしまおうかなと思ったからなんです。
『オートインクリメントで入力した値の拾い方』で質問した方がよかったかもしれませんが
周りに詳しい人もいないので一般的にどうなんだろうなと思ってしまったしだいです。
No.2
- 回答日時:
1.会員登録Tの会員名やその他情報などがユニークで一意に定める事のできる
情報なら、それをキーにして会員番号を取得する。
MAX()やLAST_INSERT_ID()を使って会員番号を拾ってきてもいいですが、
トランザクションの関係が影響を及ぼす可能性があります。
LAST_INSERT_ID()は使ったことないので何ともわかりませんが、
説明見る限りだと大丈夫そうな感じもしますが・・・。
http://dev.mysql.com/doc/refman/5.1/ja/informati …
2.会員登録Tと会員情報Tが1:nの関係にないならば、全て1つのテーブルにしてしまう。
操作が完了する過程の情報はセッションIDを加工した値をプライマリーキーにしたテーブルで保持する。
など?
勘違いしてたらすません・・・
naktakさん
2の
-操作が完了する過程の情報はセッションIDを加工した値をプライマリーキーにしたテーブルで保持する。-
という方法いいですね。
LAST_INSERT_ID()とあわせていろいろやってみようと思います。
ありがとうございました。
No.3ベストアンサー
- 回答日時:
PHP関数だとmysql_insert_id()
http://jp.php.net/manual/ja/function.mysql-inser …
PEARだとnextId()
http://pear.php.net/manual/ja/package.database.d …
tany180sxさん
ありがとうございます。
PHP関数だとmysql_insert_id()
http://jp.php.net/manual/ja/function.mysql-inser …
↑
参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 教育ソフト・学習ソフト マイクロソフトのシリアル番号と自分のアカウント解除 2 2023/07/19 08:27
- Oracle update文で質問です。 下記の条件でupdateをしたいですが、どのようにしたら良いでしょうか。 2 2022/06/23 10:51
- Oracle sqlで質問です。 Aテーブルの登録番号をキーにBテーブルから確認番号を取得したいのですが、Bテーブ 4 2023/05/18 13:08
- Excel(エクセル) Excelの操作方法を教えてください!頭文字2~8文字で特定の値に返す方法 8 2022/07/14 11:26
- その他(ソフトウェア) いきなりPDFをメルカリで売りたい 1 2023/03/04 10:05
- その他(プログラミング・Web制作) バッチファイルでPCのモデル名を取得したい 1 2022/03/31 10:58
- CPU・メモリ・マザーボード マザーボードのシリアル番号 2 2023/06/01 11:24
- gooポイント gooポイントをdポイントに交換できない。 3 2022/04/22 20:39
- バッグ・財布 こちらのバックはなんていう物ですか?シリアル番号あり教えてください 1 2022/06/11 21:32
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
DB Error: no such field
-
phpにて出欠登録管理を作成して...
-
ヒアドキュメントでSQLを書く事...
-
php+mysqlでポータルサイトを作...
-
Pro*Cの構文エラー
-
XAMPPで画面が真っ白になります。
-
PHP+SQLite でSELECT文のWHERE...
-
文字化けが解決できません。お...
-
テーブルに入っているデータと...
-
Accessのテーブルへ複数の主キ...
-
エクセルVBAについて
-
DBで指定した値しか存在しない...
-
実行時エラー3131 FROM 句の構...
-
php テーブルが作成できない
-
PHP初心者です。syntax error, ...
-
insert1つの処理でもトランザ...
-
SQL文が実行できません
-
php テーブルを作れない
-
MySQLのINSERT時にたまに重複に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
phpでテーブルを作る際変数によ...
-
csvをDBへ読み込んだら、NULLが...
-
SQLで返り値が空とでる
-
ヒアドキュメントでSQLを書く事...
-
php sqlite count 列数取得
-
OracleからAccessへのインポート
-
変数を組み入れたい
-
Accessへ日付をINSERT
-
任意の値の取得
-
日またぎの計算
-
PHPでいいね機能を作りたいので...
-
クエリObjectをforeachで回す時...
-
PHP PDOを利用してカラムの削除...
-
会員番号等に利用するダブらな...
-
access → Oracleへのデータ移...
-
トランザクション処理
-
SQL CASE 文について
おすすめ情報