• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:mysql ,phpで2つ以上のデータベースを使っての出し方)

MySQLとPHPで2つ以上のデータベースを使っての出し方

このQ&Aのポイント
  • MySQLとPHPを使用して、2つ以上のデータベースから情報を取得する方法を教えてください。
  • 質問者はデータベース初心者であり、特定のショップに複数の商品を関連付けて表示する方法を知りたいと述べています。
  • 現在のデータベースには、ショップと商品のテーブルがあり、それぞれのテーブルにはコードや商品名が含まれています。

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5243/13715)
回答No.4

$sql2 を以下のようにしてみてください(カラム名をバッククオートで囲んでます) ============================== $sql2= "select * from shop,utterumono,shouhin where shop.`shop-id`=utterumono.`shop-id` and utterumono.`shouhin-id`=shouhin.`shouhin-id` and shop.`shop-id` = " . $row["shop-id"]; ============================== SQLでは基本的にカラム名は英数字と"_"(アンダーバー)しか使用できないため"-"(ハイフン)は扱えません。 MySQLでは例外的に"`"(バッククオート)で囲むことでハイフンや日本語等が扱えます。 多分テーブルの作成等にphpMyAdminを使われたのかと思いますが、phpMyAdminは勝手にカラム名等にバッククオートを付けてくれるためハイフンが使えていたのだと思います。 私が自分のところで作った環境は無意識にアンダーバーに置き換えて書いてました。

hasu23
質問者

お礼

で、できました!!!! 感謝です!!何度もご迷惑をおかけしてしまって、またこんなに丁寧に教えていただきまして本当にありがとうございました!! ここで正直1か月くらい止まっていたので、またいろいろ作業が進行できそうです!! 本当にありがとうございました!!!

その他の回答 (3)

  • t_ohta
  • ベストアンサー率38% (5243/13715)
回答No.3

メッセージの内容からするとクエリーの実行に失敗しているようです。 ワーニングが出ているのはどの行でしょうか? 同じ環境を作ってみましたが、私のところでは問題なく表示されました。

hasu23
質問者

お礼

お忙しい中ご返信本当にありがとうございます! もう一度テーブルをすべて作り直してやってみたのですが、ぼくのでは動きませんでした。。。小さなケアレスミスなんでしょうか。。 エラーが出ているといわれるのは 「on line 38」 と「on line 39」です。 僕のエディタ上では、 36→ $sql2= "select * from shop,utterumono,shouhin where shop.shop-id=utterumono.shop-id and utterumono.shouhin-id=shouhin.shouhin-id and shop.shop-id = " . $row["shop-id"]; 37→ $result2 = mysql_query($sql2); 38→ $rows2 = mysql_num_rows($result2); 39→ while($row2 = mysql_fetch_array($result2)){ となっています。 何度もご親切にお答えいただいて、(またわざわざ同じ環境まで作っていただいて)本当に感謝しております! もし何かご助言等ありましたらお時間あるときで構いませんのでよろしくお願いいたします!ありがとうございます!

  • t_ohta
  • ベストアンサー率38% (5243/13715)
回答No.2

1回のクエリーで出すのは難しいでしょう。 まず始めのsqlは $sql = "select * from shop"; だけにして、while のループの中で $sql2= "select * from shop,utterumono,shouhin where shop.shop-id=utterumono.shop-id and utterumono.shouhin-id=shouhin.shouhin-id where shop.shop-id = " . $row["shop-id"]; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); echo "<p>"; echo $row["shop"]; while($row2 = mysql_fetch_array($result2)){ echo $row["shouhin"]; } echo "</p>"; って感じで回すとご希望のような結果になると思いますよ。

hasu23
質問者

お礼

ご回答本当にありがとうございます!!! t_ohtaさんの回答を使って自分なりに作ってみました。 ただ、これでもエラーが出てしまっています。。 データベース自体のつくりがおかしいかも、と思って見直してみたのですが、データベースはたぶん大丈夫だと思います。 ちなみに、ぼくが書いたのはこんな感じです。 ---------------------------------------------------------------- $sql= "select * from shop"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["shop"]; $sql2= "select * from shop,utterumono,shouhin where shop.shop-id=utterumono.shop-id and utterumono.shouhin-id=shouhin.shouhin-id and shop.shop-id = " . $row["shop-id"]; $result2 = mysql_query($sql2); $rows2 = mysql_num_rows($result2); while($row2 = mysql_fetch_array($result2)){          echo $row2["shouhin"]; } echo "</p>"; } } ---------------------------------------------------------------- このように作ると、下のようなエラーが出てしまいます。。 スーパーアルプス Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /virtual/******************* Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /virtual/******************* ・ ・ ・ 自分なりにいろいろ試行錯誤してみて、 $sql2= "select * from ~~~ の部分の位置をいろいろ変えてみたのですが、エラーの桁数が増えたり減ったりするだけで正しく表示できませんでした。 2度もご丁寧にお答えいただいて本当に恐縮で、また感謝しております。もしお時間ございまして、解決方法などお分かりになりましたらご教授いただけますと幸いでございます。

  • t_ohta
  • ベストアンサー率38% (5243/13715)
回答No.1

もう一つテーブルを作って utterumono ---------------------------------------------------------- shop-id shouhin-id 1    1 2    1 2    2 4    3 4    3 4    4 ---------------------------------------------------------- みたいな感じでデータを入れて、後は順番に表示するだけじゃないでしょうか。

hasu23
質問者

お礼

ご返信ありがとうございます! 早速作ってやってみました!ただ僕の記述が間違っていると思われ、思うように動きませんでした・・・。こんな感じでphpを書いていますが、どこがおかしいのかよくわかりません。。 ---------------------------------------------------------------- $sql= "select * from shop,utterumono,shouhin where shop.shop-id=utterumono.shop-id and utterumono.shouhin-id=shouhin.shouhin-id"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["shop"]; echo $row["shouhin"]; echo "</p>"; } } ---------------------------------------------------------------- です。特にこのあたりが自分にとってネックというか、見当違いのことをしているのではないかなぁ・・と思います。 もしもお時間ございましたら、このあたりもご回答いただけますと幸いです。よろしくお願いします!

関連するQ&A