データベースのデータをjsonで出力

今回は、3つのファイル使用してデータベースのデータをjsonで出力してみたいと思います。

・confing.php

・functions.php

json.php

今回使用するデータベース

サーバー名:localhost
データーベース名:db
ユーザー名:root
データーベースへのパスワード:
テーブル名:userInfo

 「userinfo」テーブルのカラムとデータ

f:id:mkyosuke:20191217104417p:plain

DB設定ファイル

confing.php

<?php
define('DSN','mysql:host=localhost;dbname=db');  ➀
define('DB_USER','root');
define('DB_PASSWORD','');
error_reporting(E_ALL & ~E_NOTICE); ➁
?>

 実行する際は、ご自身のデータベースの情報をもとに作成します。

今回は上記の設定で実行します。

➀defineで定数を定義

➁出力するエラーの種類を指定

 

ファンクション管理ファイル

functions.php

<?php
function connectDb() {
    try {
        return new PDO(DSN, DB_USER, DB_PASSWORD);
    } catch (PDOException $e) {
        echo $e->getMessage();
        exit;
    }
}
?>

特に変更する箇所はありません。

phpmysqlのデータを取得

 

 jsonを吐き出すファイル

json.php

<?php
require_once('config.php');
require_once('functions.php');

mb_language("uni");
mb_internal_encoding("utf-8"); //内部文字コードを変更
mb_http_input("auto");
mb_http_output("utf-8");

$dbh = connectDb();

$sth = $dbh->prepare("SELECT * FROM userInfo");
$sth->execute();

$userData = array();

while($row = $sth->fetch(PDO::FETCH_ASSOC)){
    $userData=array(
    'id'=>$row['user_id'],
    'name'=>$row['user_name'],
    'age'=>$row['user_age'],
    'sex'=>$row['user_sex']
    );
}

//jsonとして出力
header('Content-type: application/json');
echo json_encode($userData);
?>


userInfoは自身のconfig.phpで指定したデーターベース内で取得したいテーブル名です。
user_id、user_name、user_age、user_sexこれらは指定したテーブル内にあるカラㇺです。

PDOでMySQLに接続し、fetch(PDO::FETCH_ASSOC)を使って、すべての行を取り出し$userDataに格納

 実行結果

f:id:mkyosuke:20191217110150p:plain