前提・実現したいこと
PHPでDBから取得した値を、画面上に表示したいです。
発生している問題・エラーメッセージ
phpを使い、DBから値を取得し、画面上に表示したいのですが、表示できず困っています。 DBには接続できており、エラーは出ていません。 DB内には2件レコードが入っているため、その2件が出力される想定なのですが 全く表示されません…。 どこか違うデータベースに接続してしまっているのでしょうか…?
該当のソースコード
<?php //データベース接続情報 $user = "ユーザID"; $password = "パスワード"; $dsn = 'mysql:host=localhost;dbname=test;charset=utf8'; //データベース接続処理 try{ $connect = new PDO($dsn, $user, $password); $connect->query("set names utf8"); }catch (PDOException $e){ echo 'データベースにアクセスできません!' . $e->getMessage(); } echo '接続成功1'; try{ // SELECT文を変数に格納 $sql = 'SELECT ID FROM TB_LIST'; // SQLステートメントを実行し、結果を変数に格納 $stmt = $connect->query($sql); // foreach文で配列の中身を一行ずつ出力 foreach ((array)$stmt as $row) { // 出力 echo $row['ID']; } echo '接続成功2<br>'; }catch (PDOException $e) { die('DB接続エラー'. $e->getMessage()); } // 接続の解除 $connect = null; echo 'DB切断成功<br>'; ?>
試したこと
接続の有無等は確認し、下記のように表示されるようになっています。
接続成功1接続成功2
DB切断成功
ですが、肝心のDBから取得した値がとれず…。
phpMyAdmin自体をあまり理解できていないため
そこが原因なのか?とも考えているのですが
phpも初心者なので、原因の切り分けもできず…。
分からないことが分からない状態ですので、教えていただければと思います…。
補足情報(FW/ツールのバージョンなど)
DB・サーバーは、エックスサーバの無料のものを使用しています。
MySQLバージョン 5.0.95
WordPressバージョン: 5.0.3
PHPバージョン:PHP7.0.x
WordPressはどこがどう関係しているのでしょうか?いずれにしても、タグは「MySQL」は追加された方が良いです。
あと、データは存在してますか?→失礼。2件あるんですね。
質問は編集できますので適宜ご対応ください
ちなみにlocalhostしている時点でphp実行しているサーバーに接続しにいきます。そこでdbnameも指定した状態でException拾っていないのであれば問題はないと思います。
エックスサーバは使ったことないですが、phpと同じサーバー内にDBがあるんですよね?サーバーのIPが同じであれば同じです。
$stmtはfalseになっていませんか?
PHPのエラーログも確認しましょう。
補足なのでこちらに書きますが
phpMyAdminはあくまでMySQLのデータを確認するためのツールなので、
本件とはほとんど関係なかったりします。
今回のエラーには関係ないとは思いますが、SQL文のテーブル名とフィールド名は下記のようにバッククォートで括るようにしましょう。
SELECT `ID` FROM `TB_LIST`
特にフィールド名をバッククォートで括っていないと、サーバによってはエラーが返されることがあります。
また、このようにした方が処理速度も若干速くなるようです。
>kasa0さん
$stmtがfalseになっておりました。
アドバイスいただき、ありがとうございました!
>cerfwebさん
全く知りませんでした…。アドバイスありがとうございます!
バッククォートで括らせていただきました!
バッククォートの件は予約語との識別とかも関係ありますね。
https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html
詳しくありがとうございます!!
読ませていただきます!
回答1件
あなたの回答
tips
プレビュー