質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

解決済

会員データを複数のテーブルへ分けてINSERTする方法

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

2回答

0リアクション

0クリップ

1023閲覧

投稿2018/05/12 19:44

編集2018/05/12 20:40

会員制サイトを自作しています。

Webサイトの新規登録ページからユーザ登録時に
データを複数のテーブルへ分けて登録したいです。

userテーブル

idmailpasswordcreated
1tanaka@xxx.comxxxx2018-05-13 00:00:00
2yamada@xxx.comxxxx2018-05-13 00:00:00
3sasaki@xxx.comxxxx2018-05-13 00:00:00

※idはAUTO_INCREMENT

profileテーブル

user_idnamegenderbirhdate
1田中12000-01-01
2山田22000-02-02
3佐々木12000-03-03

※user_idにはuserテーブルのidと同じものを登録

登録ボタンが押されたら・・・

  1. userテーブルにinsert
  2. lastInsertId()でidを取得
  3. profileテーブルに残りのデータをinsert

PHP

// userテーブルにインサート $sql = 'insert into user (mail, password, created) values (:mail, :password, now())'; $stmt = $dbh->prepare($sql); $params = array(':mail' => $input_value['mail'], ':password' => $input_value['password']); $stmt->execute($params); $user_id = $dbh->lastInsertId(); // profileテーブルにインサート $sql = 'insert into profile (user_id, name, gender, birhdate) values (:user_id, :name, :gender, :birhdate)'; $stmt = $dbh->prepare($sql); $params = array(':user_id' => $user_id, ':name' => $input_value['name'], ':gender' => $input_value['gender'], ':birhdate' => $input_value['birhdate']); $stmt->execute($params);

このやり方だと、userテーブルのidとprofileテーブルのuser_idにズレが生じてしまう事はありますか?
また、確実にidとuser_idを同じにする方法等ありますか?

他に効率の良い書き方や考え方などありましたらどなたか教えてください。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

m.ts10806

2018/05/12 20:27

実際にずれる事例が発生したのでしょうか?
m.ts10806

2018/05/12 20:29

細かいかもしれませんが、タグにある内容をタイトルに入れなくても良いですよ。冒頭に入れられていることで質問一覧から見たときにかなり冗長なタイトルになってしまいますので。
退会済みユーザー

退会済みユーザー

2018/05/12 20:36

ありがとうございます。タイトル修正しました。
退会済みユーザー

退会済みユーザー

2018/05/12 20:38

実際にずれる事例が発生したわけではありませんが、ずれる事はあるのか、他にもっと良いやり方があるのか知りたかったので質問しました。
m.ts10806

2018/05/12 20:39

更新ボタン押し忘れですかね?編集が反映されていないようです。 質問した経緯了解です。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。