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

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

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

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

PHP

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

Q&A

解決済

2回答

824閲覧

このteratailの質問のように質問直後にidをすぐ取得して、表示する方法

SugiuraY

総合スコア317

MySQL

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

PHP

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

0グッド

0クリップ

投稿2018/10/02 12:24

非常に素朴な疑問なのですが、この質問をした直後、個別の質問ページを遷移して
私が入力した内容がおそらくDBに格納されるとともに、出力されます。実際に遷移後のページの
アドレスを見ると固有のアドレスが割り当てられているものと伺えます。

例えばPHPやMYSQLを使用している場合、
1)データベースに情報を格納
2)header('Location:XXX')でページの遷移
3)遷移後のページで入力されたばかりの値をMYSQL上の一意のidから出力

という流れであるとすれば、どのようにして格納されたばかりのidを取得しているのでしょうか?
例えば すぐにqueryでwhere numb=100のidを取得しても、他と重複している可能性もありますし、
timestampを利用して最新のレコードを取得するのも、複数投稿があれば、100%そのレコードが指定されるかを保証してくれるものではないと思います。

そもそも全く異なるロジックなのかもしれませんが、このように格納直後のidを取得して表示する場合と
全く違う方法を推奨する場合はそれぞれアドバイスをいただけますでしょうか?

目的は
1.質問する > 2.DB値が格納される > 3.遷移後のページで直ぐ質問した内容が出力される
問題は
1.2は連続しているが、3.でページが遷移するため1.2の情報を出力するために紐付ける術が思い浮かばないということになります。

PHP

1if(true){ 2//..省略 3$sql ='INSERT INTO table (numb) values (100)';//idは一意でauto increment 4//..省略 5header('Location:http://xxxxxxxx/id')//仮に上記aiで1が割り当てられて場合、どうやってid=1を取得してheader('Location:http://xxxxxxxx/id=1')のように格納したばかりの情報を出力するページに遷移させれば良いのかアイデアが思い浮かびません。。 6}

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

投稿2018/10/02 12:27

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SugiuraY

2018/10/02 12:45

Kosuke_Shibuya様 ご教示いただき、ありがとうございます。 マニュアルもしっかり拝見してみようと思います。
guest

0

ベストアンサー

lastinsertid
を使うと簡単かつ確実に実装できます。

参考になる質問

投稿2018/10/02 12:28

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

SugiuraY

2018/10/02 12:42

tnant様 ご教示いただきありがとうございます。 過去記事を見るとトランザクションが重なってもコンフリクトがないようですね。 マニュアルも拝見して仕様を見て早速、実装してみようともいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問