PHPでデータベースとフロントエンドを繋ぐ!MySQLデータのJSONエンコード
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);
?>
解説
mysqli_connect()
関数を使ってデータベースに接続します。mysqli_query()
関数を使って SQL クエリを実行します。mysqli_fetch_assoc()
関数を使って結果を配列に変換します。json_encode()
関数を使って配列を JSON にエンコードします。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 が出力されます。
実行方法
- 上記のコードを
index.php
などのファイルに保存します。 - Web サーバー上でファイルを保存します。
- ブラウザでファイルを開きます。
出力例
{
"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