前提・解決したいこと
/tech.pjin.jp/blog/2017/06/08/sql練習問題-問58/
上記の問題をphpMyadmin上で解答する際は答えのように表示されるのだが、
MAMPのローカルサーバで出力しようとするとc.nameが表示されない。
発生している問題
var_dumpで表示する際にc.nameが表示されない
PHP
1コード 2<?php 3//DB接続 4 //公開するためpass等は隠しています。接続は問題なしです。 5 $dsn = "*********"; 6 $user = "*********"; 7 $pass = "*********"; 8 9try { 10 $dbh = new PDO($dsn,$user,$pass,[ 11 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 12 ]); 13 //SQLの準備、データの取得 14 $sql = 15 'SELECT c.name, p.name, p.uniform_num 16 FROM players p 17 JOIN countries c ON c.id = p.country_id'; 18 // echo "<pre>"; 19 // var_dump($sql); 20 // echo "</pre>"; 21 // exit(); 22 //SQLの実行 23 $stmt = $dbh->query($sql); 24 // echo "<pre>"; 25 // var_dump($stmt); 26 // echo "</pre>"; 27 // exit(); 28 //SQLの結果を受け取る 29 $result = $stmt->fetchAll(PDO::FETCH_ASSOC); 30 echo "<pre>"; 31 var_dump($result); 32 echo "</pre>"; 33 exit(); 34 $dbh = null; 35} catch(PDOException $e) { 36 echo '接続失敗'.$e->getMessage(); 37 exit(); 38} 39//出力結果 40array(736) { 41 [0]=> 42 array(2) { 43 ["name"]=> 44 string(24) "ジュリオセザール" 45 ["uniform_num"]=> 46 string(2) "12" 47 }~~~~~ 48 49 50?>
試したこと
var_dumpで各変数毎に出力してみたが変化わからず。
PHP公式にてPDOを確認してみるも異常があるか判断できず。
SELECTのところでnameの順番を変えてみると結果が変わった。
出力結果をみるとname値が代入され変化している。そのためname値が一つしかなく
片方のテーブルのnameしか表示されないのがわかった。
なのでJOINした際の結合等を見直してみたが修正できず
質問させていただきます。
php
1コード 2$sql = 3 'SELECT p.name, p.uniform_num, c.name 4 FROM players p 5 JOIN countries c ON c.id = p.country_id'; 6//出力結果 7array(736) { 8 [0]=> 9 array(2) { 10 ["name"]=> 11 string(12) "ブラジル" //c.nameに変化した 12 ["uniform_num"]=> 13 string(2) "12" 14 } 15
(そのQ&Aにも解説なし)
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/04 06:03
2021/12/04 06:07 編集