会員制サイトを自作しています。
Webサイトの新規登録ページからユーザ登録時に
データを複数のテーブルへ分けて登録したいです。
userテーブル
id | password | created | |
---|---|---|---|
1 | tanaka@xxx.com | xxxx | 2018-05-13 00:00:00 |
2 | yamada@xxx.com | xxxx | 2018-05-13 00:00:00 |
3 | sasaki@xxx.com | xxxx | 2018-05-13 00:00:00 |
※idはAUTO_INCREMENT
profileテーブル
user_id | name | gender | birhdate |
---|---|---|---|
1 | 田中 | 1 | 2000-01-01 |
2 | 山田 | 2 | 2000-02-02 |
3 | 佐々木 | 1 | 2000-03-03 |
※user_idにはuserテーブルのidと同じものを登録
登録ボタンが押されたら・・・
- userテーブルにinsert
- lastInsertId()でidを取得
- profileテーブルに残りのデータをinsert
PHP
1// userテーブルにインサート 2$sql = 'insert into user (mail, password, created) values (:mail, :password, now())'; 3$stmt = $dbh->prepare($sql); 4$params = array(':mail' => $input_value['mail'], ':password' => $input_value['password']); 5$stmt->execute($params); 6 7$user_id = $dbh->lastInsertId(); 8 9// profileテーブルにインサート 10$sql = 'insert into profile (user_id, name, gender, birhdate) values (:user_id, :name, :gender, :birhdate)'; 11$stmt = $dbh->prepare($sql); 12$params = array(':user_id' => $user_id, ':name' => $input_value['name'], ':gender' => $input_value['gender'], ':birhdate' => $input_value['birhdate']); 13$stmt->execute($params);
このやり方だと、userテーブルのidとprofileテーブルのuser_idにズレが生じてしまう事はありますか?
また、確実にidとuser_idを同じにする方法等ありますか?
他に効率の良い書き方や考え方などありましたらどなたか教えてください。
回答2件
あなたの回答
tips
プレビュー