質問編集履歴

2 誤字の修正、状況の追加等

java.empress

java.empress score 16

2016/03/30 10:59  投稿

3つのテーブルを結合してデータを取得したい(php、mysql)
分かりづらい質問ですみません。
質問の修正と追加をしました。
 ↓
現在phpとmysqlの勉強でネットショップを作成しているのですが
不明な点がありますのでご教授頂けますでしょうか。
ログインしている会員の購入履歴を3つのテーブルからデータを取得して表示したい。
流れとしましては
1.メールアドレスとパスワードを元にデータベースから会員のcodeと名前を呼び出し、ログイン
2.呼び出したcodeをセッションに格納し、そのcodeを元にログイン中の会員の購入履歴の情報になるデータを3つのテーブルから取得、各変数へ代入
3.for文にて一覧表示。
2番目のコーディングをしているのですが
エラー「Notice: Undefined index:●●●.●●」が複数表示されてしまいました。
(変数へ代入する箇所です。)
うまくテーブルから取得または代入されていない様なので
まず取得の確認としてphpmyadminにて直接SELECT文を記述しデータが表示されるか確認した所上手く表示。
ではphpファイルへコーディングミスによって取得できていないのかと思い
phpへif ( $rec['●●●.●●'] == null ){ echo '取得失敗';}と追記し取得の確認をした所、取得失敗と表示されたのでやはり、データの取得自体が出来ていないようです。
色々調べているのですがなかなか解決できずにいます。
ご教授頂ければ幸いです。
テーブルの内容
【dat_sales】
code
date
code_member
【dat_sales_product】
code_sales
code_product
tanka
quantity
【mst_product】
pro_code
pro_name
pro_subname
gazou
dat_salesテーブルのcode と dat_sales_productテーブルのcode_sales
dat_sales_productテーブルのcode_product と mst_productテーブルのpro_code
で紐づけ。
以下作成したコードです。
<?php
   session_start();
   session_regenerate_id(true);
   
   header("Content-Type: text/html; charset=UTF-8");
~中略~
try
{
$code=$_SESSION['member_code'];
$name=$_SESSION['member_name'];
$dsn='mysql:dbname=netshop;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');
$sql='SELECT
dat_sales.date,
dat_sales_product.tanka,
dat_sales_product.quantity,
mst_product.pro_name,
mst_product.pro_subname,
mst_product.gazou
FROM
dat_sales
INNER JOIN
dat_sales_product
ON
dat_sales.code = dat_sales_product.code_sales
INNER JOIN
mst_product
ON
dat_sales_product.code_product = mst_product.pro_code
WHERE
code_member=?';
code_member=?;';
$stmt=$dbh->prepare($sql);
$data[]=$code;
$stmt->execute($data);
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$dbh=null;
$kounyuubi[]=$rec['dat_sales.date'];
$urine[]=$rec['dat_sales_product.tanka'];
$suuryo[]=$rec['dat_sales_product.quantity'];
$hinmei[]=$rec['mst_product.pro_name'];
$subhinmei[]=$rec['mst_product.pro_subname'];
$gazou[]=$rec['mst_product.gazou'];
~中略~
}
catch(Exception $e)
{
   print'ただいま障害により大変ご迷惑をお掛けしております。';
   exit();
}
?>
宜しくお願い致します。
  • PHP

    30618 questions

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

  • MySQL

    9255 questions

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

  • phpMyAdmin

    1023 questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

1 誤字の修正、状況の説明等

java.empress

java.empress score 16

2016/03/30 10:57  投稿

複数のテーブルを結合してデータを取得したい(php、mysql)
3つのテーブルを結合してデータを取得したい(php、mysql)
分かりづらい質問ですみません。  
質問の修正と追加をしました。  
  ↓  
 
現在phpとmysqlの勉強でネットショップを作成しているのですが
不明な点がありますのでご教授頂けますでしょうか。
躓いている内容としましては  
ログインしている会員の購入履歴を3つのテーブルからデータを取得して表示したい。
 
流れとしましては  
1.メールアドレスとパスワードを元にデータベースから会員のcodeと名前を呼び出し、ログイン  
2.呼び出したcodeをセッションに格納し、そのcodeを元にログイン中の会員の購入履歴の情報になるデータを3つのテーブルから取得、各変数へ代入  
3.for文にて一覧表示。  
 
2番目のコーディングをしているのですが  
エラー「Notice: Undefined index:●●●.●●」が複数表示されてしまいました。  
(変数へ代入する箇所です。)  
うまくテーブルから取得または代入されていない様なので  
まず取得の確認としてphpmyadminにて直接SELECT文を記述しデータが表示されるか確認した所上手く表示。  
ではphpファイルへコーディングミスによって取得できていないのかと思い  
phpへif ( $rec['●●●.●●'] == null ){ echo '取得失敗';}と追記し取得の確認をした所、取得失敗と表示されたのでやはり、データの取得自体が出来ていないようです。  
色々調べているのですがなかなか解決できずにいます。  
ご教授頂ければ幸いです。  
テーブルの内容
【dat_sales】
code
date
code_member
【dat_sales_product】
code_sales
code_product
tanka
quantity
【mst_product】
pro_code
name
subname
pro_name
pro_subname
gazou
dat_salesテーブルのcode と dat_sales_productテーブルのcode_sales
dat_sales_productテーブルのcode_product と mst_productテーブルのpro_code
が同じになります。
で紐づけ。
以下作成したコードです。
<?php  
   session_start();  
   session_regenerate_id(true);  
     
   header("Content-Type: text/html; charset=UTF-8");  
 
~中略~  
 
try  
{  
$code=$_SESSION['member_code'];
$name=$_SESSION['member_name'];
$dsn='mysql:dbname=netshop;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SET NAMES utf8');
$sql='SELECT
dat_sales.date,
dat_sales_product.tanka,
dat_sales_product.quantity,
mst_product.pro_name,
mst_product.pro_subname,
mst_product.gazou
from
FROM
dat_sales
inner join
dat_sales_product
on
INNER JOIN
dat_sales_product
ON
dat_sales.code = dat_sales_product.code_sales
inner join
INNER JOIN
mst_product
on
ON
dat_sales_product.code_product = mst_product.pro_code
WHERE
code_member=?';
$stmt=$dbh->prepare($sql);
$data[]=$code;
$stmt->execute($data);
$rec=$stmt->fetch(PDO::FETCH_ASSOC);
$dbh=null;
$kounyuubi[]=$rec['dat_sales.date'];
$urine[]=$rec['dat_sales_product.tanka'];
$suuryo[]=$rec['dat_sales_product.quantity'];
$hinmei[]=$rec['mst_product.pro_name'];
$subhinmei[]=$rec['mst_product.pro_subname'];
$gazou[]=$rec['mst_product.gazou'];
~中略~  
初心者の為、おかしな記述があるかもしれませんが
ご教授いただけましたらありがたいです。
}
catch(Exception $e)
{
   print'ただいま障害により大変ご迷惑をお掛けしております。';
   exit();
}
?>
宜しくお願い致します。
  • PHP

    30618 questions

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

  • MySQL

    9255 questions

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

  • phpMyAdmin

    1023 questions

    phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る