リレーションを張るための工夫を教えて頂きたいです。
必要な情報だけ書きますと、
user_dataテーブルとuser_skillテーブルの2つのテーブルがあります。
user_dataテーブルは、ユーザーの名前や住所などの基本的な情報が入るテーブルです。
user_skillテーブルは、ユーザーのスキルが入るテーブルで、カラムはシンプルにuser_idとskillとyearの3つです。
WEBページの入力フォーム経由でDBへ格納されます。
ある人がスキルを3つ持っていたとします。
その場合、user_skillテーブルには3レコード分が挿入されます。
でも、後々誰のスキルかわからなくなりそうです。
そのため、「user_skillテーブルでのuser_id」=「user_dataテーブルのid」である必要があります。
出来るかどうかは分かりませんが、思いついたのが下記記述です。
$stmt = $pdo->prepare("INSERT INTO user_skill(user_id,skill,year) VALUES (?, ?, ?)"); $stmt->execute([ user_dataテーブルの一番新しい(番号が古い)id + 1, $_SESSION['jion2']['programs1_1'], $_SESSION['jion2']['programs_year1_1'], ]); $stmt = $pdo->prepare("INSERT INTO user_skill(user_id,skill,year) VALUES (?, ?, ?)"); $stmt->execute([ user_dataテーブルの一番新しい(番号が古い)id + 1, $_SESSION['jion2']['programs1_2'], $_SESSION['jion2']['programs_year1_2'], ]); $stmt = $pdo->prepare("INSERT INTO user_skill(user_id,skill,year) VALUES (?, ?, ?)"); $stmt->execute([ user_dataテーブルの一番新しい(番号が古い)id + 1, $_SESSION['jion2']['programs1_3'], $_SESSION['jion2']['programs_year1_3'], ]);
これができれば常に
「user_skillテーブルでのuser_id」=「user_dataテーブルのid」
にできるのですが...
user_dataテーブルの一番新しい(番号が古い)id + 1
というのは、できるのでしょうか?
回答4件
あなたの回答
tips
プレビュー