MySQLからPHPでデータを取得してブラウザに表示する

今回は前回に引き続きMySQLからデータを取得する方法について書いていきます。

データベースとの接続がまだの方はこちらを先に見てください。スクリーンショット2023-12-1120.24.57.png

今回は'users'というテーブルを用意しました。

それぞれid、苗字、名前、メールアドレスのデータが入っています。

SQL文の準備

まずはSQL文の準備です。

このように書きます。
$sql = "SELECT * FROM テーブル名";
今回だとテーブル名の所には'users'が入ります。

'users' から(FROM) 全部のデータ(*) を取ってくる(SELECT)という意味になります。

その処理を$sqlに変数として入れてます。

SQL文の実行

SQL文の実行ですが前回同様PDOを使っていきます。
$stmt = $dbh->query($sql);
query()というメソッドを使ってデータベースに問い合わせる処理となります。

PDO::query() は、一回の関数コールの中で SQL ステートメントを準備して実行し、 結果を PDOStatement オブジェクトとして返します。

それを変数$stmtに入れていきます。

結果の取り出し

$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
結果を取り出すコードは上記になります。

今回はfetchAllというメソッドを使用しています。

PDOStatement::fetchAll — 結果セットから、残っている行を取得する。

その中のPDO::FETCH_ASSOCですが、これは連想配列として各行を返します。

これにより、結果セットが連想配列として取得され、id,last_name,first_name,emailといったキーでアクセスできるようになります。

実際に書いてみよう

前回までのコード
`<?php
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$user = 'root'; // ここは設定したユーザーを入れてください
$pass = 'root'; // ここは設定したパスワードを入れてください

try {
$dbh = new PDO($dsn,$user,$pass,[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
echo '接続成功';
$dbh = null;
} catch(PDOException $e) {
echo '接続失敗'. $e->getMessage();
exit();
};

?>`

上記が前回書いたコードです。

ここから続きを書くと
`<?php
$dsn = 'mysql:host=localhost;dbname=test;charset=utf8';
$user = 'root'; // ここは設定したユーザーを入れてください
$pass = 'root'; // ここは設定したパスワードを入れてください

try {
$dbh = new PDO($dsn,$user,$pass,[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
echo '接続成功';
// SQLの準備
$sql = 'SELECT * FROM users';
// SQLの実行
$stmt = $dbh->query($sql);
// SQLの結果を受け取る
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($result);
$dbh = null;
} catch(PDOException $e) {
echo '接続失敗'. $e->getMessage();
exit();
};

?>`
このようになります。

var_dump()で見てみましょう。スクリーンショット2023-12-1121.41.06.png
ユーザーデータが配列で返ってきてますね。

この配列をforeachを使ってリストで表示したいと思います。

次のように書いてください。
`




  • No.


    氏名:


    メールアドレス:



` これでユーザーの数だけリストが表示されます。![スクリーンショット2023-12-1121.54.16.png](https://portfolio-688145.assets.newt.so/v1/60b315d7-019b-4fe1-b703-56875e74459b/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%882023-12-1121.54.16.png)

ユーザーの情報がリストで表示することができました!

お疲れ様でした!