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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

Q&A

解決済

1回答

4746閲覧

DBからデータの取得とデータの出力を別のPHPファイルで行いたい

___knd

総合スコア12

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

PHP

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

1グッド

0クリップ

投稿2016/01/15 08:02

編集2016/01/17 08:05

DBからデータを取得するPHPファイルと、取得したデータをアウトプットするPHPファイルに分けてコーディングをしたいと考えています。

例えば、
保険テーブル(保険名、保険ID)
ユーザーテーブル(ユーザー名、保険ランク、保険ナンバー)

保険テーブル
|保険名|保険ID|
|楽々 | 1000|
|得々 | 1001|

ユーザーテーブル
|ユーザ名|保険ランク|保険No|
| 太郎| 1| 000|
| 花子| 1| 001|

このようになっていた場合、
保険ランクと保険ナンバーから保険IDを抽出し、
ユーザー名と保険名を配列に保存したいです。

php

1 // SQLクエリ作成 2 $sql = 'SELECT 保険テーブル.保険名 3 FROM 保険テーブル,ユーザーテーブル 4 WHERE ユーザーテーブル.ユーザーランク||ユーザーテーブル.ユーザーナンバー = 保険テーブル保険ID

このようにして取得できるのかと思ったのですが、うまく取得できません。調べてみると内部結合を使わなくても取れそうな感じがしたのですが、取れないのでしょうか?

また、while文で配列にして保存する部分もよく分かっていないので、取得し、保存する部分もご教授いただけると助かります。(タイトル通り、別のファイルで行いたいので、そのように書いていただけると理解が深まると思われます)

SQLはポスグレを使っています。よろしくお願いします

==========
追記
SQL文がうまく取得できません。欲しいデータとしては、
|保険名|ユーザー名|
| 楽々| 太郎|
| 得々| 花子|

こういうイメージです。欲しいデータを書き忘れてすみません。
命令の実行がうまくいっていないのと、配列にうまく保存できていない(保存のイメージがわかない)のが問題点です。命令が書けていないので配列に入れる段階ではないのですが…

追記
別のPHPファイルで〜〜というタイトルの意味は、
DB.phpでDBから取得する部分を行い、show.phpで取得したデータを表示する作業をしたいという意味です。forやwhileでデータを取得する部分のイメージがうまくできていないので…その部分を教えていただきたいです。

よろしくお願いしますよろしくお願いします。

miyabi-sun👍を押しています

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

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

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

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

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

ao_love

2016/01/15 08:33

うまく取得できない、という状況の詳細をお願いします。 エラーでSQLが通らないのか、ほしい情報がないのか、情報はあるけど表示のさせ方が分からない、なのか。 (そのSQLではおそらく通らないと思いますが…) また、最終的に表示させたいものもいまいちよくわからないのでそのあたりの詳細を提示してください。
guest

回答1

0

ベストアンサー

こんにちは

質問がDBとPHPの話が混同されているようですね。

別のPHPファイルを分けるという点がよくわからないので、一応こんな方法でよいでしょうかという流れです話してみます。

■■■SQLの話
結果として、最後に記述されている内容が出力出来れば良いのかと思います。

SQL

1SELECT 2 保険テーブル.*, 3 ユーザーテーブル.* 4FROM 5 保険テーブル 6 LEFT OUTER JOIN ユーザーテーブル ON ユーザーテーブル.保険No= 保険テーブル保険ID

※動作テストしていないので、こんな感じでと伝わればと。
条件はLEFT OUTER JOIN に記載した、
ユーザの保健NOと保健テーブルのNo(id)をひも付けるだけでいいと思います。

■■■PHPの話

上記SQL分を使用して以下のような形で結果を回して見てはいかがでしょうか。
詳細は参照のURLを閲覧お願いします。
参照: http://php.net/manual/ja/mysqli-result.fetch-assoc.php

PHP

1$query = "【先ほどのSQL】"; 2if ($result = $mysqli->query($query)) { 3 while ($row = $result->fetch_assoc()) { 4 printf ("%s\n", $row); 5 } 6 $result->free(); 7}

投稿2016/01/15 09:19

takataka1984

総合スコア66

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

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

___knd

2016/01/17 08:07

こんにちは。返信遅れてしまいすみません。 SQLの方は理解できました。ありがとうございます。 whileで取得する部分のイメージがどのサイトを見てもわからなかったので、具体的にどうなっているのか教えていただきたいです。(またはサイトの紹介をしていただきたいです。) また、別のファイルに分けるという意味の補足をしましたのでそちらをご覧になっていただけると助かります。(まだ何が言いたいかわからないという場合はさらに補足させていただきます。)
ao_love

2016/01/18 06:54

横からのコメント失礼します。 提示されたDBの構造では、SQL内で||を使っていることから見ても、ユーザの保険Noと保険IDは紐付いておらず、ユーザーランクと保険Noをつなげて初めて保険IDになるのかな?と思っていました。 ですが、SQLはそれでいい、ということなので格納されているのは直接保険IDなのでしょうか…? ※あと、提示されているのがMySQLでのsqlなのでポスグレではそのままでは動かないかと思います。 PHPを分けることに関しては、あまり意味がないように思えるのですが、運用上必要とかいうことでしょうか?
___knd

2016/01/19 07:15

コメントありがとうございます。参考にこちらの都合の良いように改変させて使わせていただいたので大丈夫です。ありがとうございます。 そうですね…そういう指定がある(既存のシステムがそのように動いている)という感じです…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問