2017-08-28 17 views
-1

userloginとuserprofileの2つのテーブルを以下の列で作成しました。SQL - 親テーブルの属性を持つ親テーブルと子テーブルにデータを一緒に挿入します。

userlogin: 
    id 
    uname 
    pass 

userprofile: 
    user_id(Foreign key) 
    name 
    gender 
    aboutme 

私は、申し込み時にUSERPROFILEデータの一部を取ることになるので、私はUSERPROFILEテーブルにuserloginのテーブルから新しく生成されたIDを与えるための最良の方法だろうかと思いました。

私は両方のインサートクエリーを互いに直してみることを考えましたが、同時に複数のユーザーがサインアップしていて、1人のユーザーのログインが別のユーザープロファイルで保存されている場合はどうなりますか?

代わりに、ユーザー名でキー入力されたプロファイルを保存する必要がありますか?

+0

可能な重複:https://dba.stackexchange.com/questions/46410/how-do-i-insert-a-row-which-contains-a-foreign-key – kenfire

+0

そうではないようです - last_insert_id()、FKsではなく、本当の質問のようです。 –

+0

@kenfire私はそれを読んだが、私はlast_insert_idがそれにもっとよく答えるようだったと思う。とにかくありがとう。 – reevkandari

答えて

0

を良いですが、ここで指摘して別の事は、おそらくそこにあります。

id場合、

  1. INSERT INTO userlogin (uname, pass) VALUES (..., ...)AUTO_INCREMENTある - idを指定せずに。
  2. LAST_INSERT_ID() - これはあなたに値を与え、あなたの接続に特有のものです。それは他の接続が潜入してあなたのIDをつかむことはできません。
  3. INSERT INTO userprofile (user_id, ...) VALUES ($id, ...)

を行うため、その値を使用して2つのテーブルを結合していないため、いくつかの理由がありますか? 1:1の関係はめったに役に立ちません。説明したようにhere

+0

素晴らしい.. last_insert_id()はちょうど私が探していたものです。私は物事を少しアトミックにしようとしていますが、userloginテーブルには、最後に生成されたotp、acountステータスなどの多くのセキュリティがあります。 そして、プロファイルセクションには10個以上のフィールドがあります構造をきれいに保つ方がいいかもしれないと私は決めたかもしれない。 しかし、提案をありがとう。 last_insert_idが素晴らしいのは、 '$ last_id = $ conn-> lastInsertId();として私のPDO上でそれを使用することです。 ' – reevkandari

+0

良い。各APIには、その重要な機能に対する独自のスペルがあります。 –

関連する問題