PHPでデータベースとフロントエンドを繋ぐ!MySQLデータのJSONエンコード

2024-04-04

PHP で MySQL の結果を JSON にエンコードする方法

準備

  • PHP の実行環境
  • MySQL データベース
  • データベースに接続するための情報 (ホスト名、ポート番号、データベース名、ユーザー名、パスワード)
<?php

// データベースへの接続
$connection = mysqli_connect(
    'localhost',
    'root',
    'password',
    'database_name'
);

// エラー処理
if (!$connection) {
    echo 'データベースへの接続に失敗しました。';
    exit;
}

// SQL クエリの実行
$query = 'SELECT * FROM users';
$result = mysqli_query($connection, $query);

// エラー処理
if (!$result) {
    echo 'クエリの実行に失敗しました。';
    exit;
}

// 結果を配列に変換
$data = [];
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row;
}

// JSON エンコード
$json = json_encode($data);

// 結果の出力
echo $json;

// データベースの接続を閉じる
mysqli_close($connection);

?>

解説

  1. mysqli_connect() 関数を使ってデータベースに接続します。
  2. mysqli_query() 関数を使って SQL クエリを実行します。
  3. mysqli_fetch_assoc() 関数を使って結果を配列に変換します。
  4. json_encode() 関数を使って配列を JSON にエンコードします。
  5. echo 文を使って JSON を出力します。

ポイント

  • json_encode() 関数のオプションを使って、JSON の出力形式を調整できます。
  • 例えば、JSON_PRETTY_PRINT オプションを指定すると、JSON を見やすく出力できます。

その他の方法

  • PDO を使ってデータベースに接続することもできます。
  • JSON ライブラリ を使って JSON をエンコードすることもできます。



<?php

// データベースへの接続
$connection = mysqli_connect(
    'localhost',
    'root',
    'password',
    'database_name'
);

// エラー処理
if (!$connection) {
    echo 'データベースへの接続に失敗しました。';
    exit;
}

// SQL クエリの実行
$query = 'SELECT * FROM users';
$result = mysqli_query($connection, $query);

// エラー処理
if (!$result) {
    echo 'クエリの実行に失敗しました。';
    exit;
}

// 結果を配列に変換
$data = [];
while ($row = mysqli_fetch_assoc($result)) {
    $data[] = $row;
}

// JSON エンコード
$json = json_encode($data, JSON_PRETTY_PRINT);

// 結果の出力
echo $json;

// データベースの接続を閉じる
mysqli_close($connection);

?>
  • オプションを指定しない場合は、1行に圧縮された JSON が出力されます。

実行方法

  1. 上記のコードを index.php などのファイルに保存します。
  2. Web サーバー上でファイルを保存します。
  3. ブラウザでファイルを開きます。

出力例

{
    "data": [
        {
            "id": 1,
            "name": "John Doe",
            "email": "[email protected]"
        },
        {
            "id": 2,
            "name": "Jane Doe",
            "email": "[email protected]"
        }
    ]
}



PDO を使う

<?php

// PDO でデータベースに接続
$pdo = new PDO(
    'mysql:host=localhost;dbname=database_name',
    'root',
    'password'
);

// SQL クエリの実行
$statement = $pdo->query('SELECT * FROM users');

// 結果を配列に変換
$data = $statement->fetchAll(PDO::FETCH_ASSOC);

// JSON エンコード
$json = json_encode($data, JSON_PRETTY_PRINT);

// 結果の出力
echo $json;

?>
  • PDO は mysqli よりも新しい API で、よりオブジェクト指向的なプログラミングが可能です。
  • PDO は複数のデータベースに対応しているので、将来的に別のデータベースを使用する場合にも簡単に移行できます。

JSON ライブラリを使う

PHP には JSON を扱うためのライブラリがいくつかあります。

これらのライブラリを使うと、より柔軟に JSON を扱うことができます。

<?php

// JSON-RPC ライブラリを使う
require_once 'jsonrpc.php';

$jsonrpc = new jsonrpc();

// SQL クエリの実行
$result = mysqli_query($connection, 'SELECT * FROM users');

// 結果を JSON にエンコード
$json = $jsonrpc->encode($result);

// 結果の出力
echo $json;

?>
  • JSON ライブラリは、JSONP や XML などの他のデータ形式にも対応している場合があります。

その他

  • データベースから取得したデータをそのまま JSON にエンコードするのではなく、いったん配列に格納してから JSON にエンコードすると、データの加工や整形が容易になります。
  • JSON エンコードする前に、不要なデータや機密情報を削除することを忘れないでください。

php mysql json


集計処理をパワーアップ - MySQLで同じテーブルを2回結合して複雑な分析を行う

自己参照関係:テーブル内に親子関係が存在する場合、親レコードと子レコードを関連付けるために、同じテーブルを2回結合する必要があります。階層データの取得:ツリー構造のような階層データを取得する場合、同じテーブルを複数回結合することで、各レベルのデータを取得できます。...


MySQLデータベースの救世主!?『--all-databases』ダンプから単一データベースを蘇らせる秘伝の術!

このチュートリアルでは、mysqldump コマンドを使用して --all-databases オプションで生成されたダンプファイルから単一のデータベースをインポートする方法を説明します。前提条件MySQLサーバーがインストールされているmysqldump コマンドラインツールへのアクセス...


【MySQL初心者向け】LIMITとOFFSETで結果セットを自在に操作:詳細解説とサンプルコード集

MySQLでクエリを実行する際、結果セット全体を取得したい場合もあれば、特定の行のみを抽出したい場合もあります。そのような場合に役立つのが、LIMITとOFFSETというキーワードです。本記事では、LIMITとOFFSETを組み合わせることで、MySQLからどのような行が返されるのかについて、詳細かつ分かりやすく解説します。...


PythonでJSONデータを扱うならSQLModel!JSON列の定義から読み書きまで徹底解説

SQLModel は、Python で SQL データベースとやり取りするためのシンプルな ORM (Object Relational Mapper) です。JSON 列を含む複雑なデータ構造を扱う場合にも、SQLModel を使用することができます。...