PHPでは、多くの場合、データベースからデータを取得し、フロントエンドにAPIインターフェイスを提供するなど、JSON形式で返す必要があります。これを行うには、 MySQLI拡張機能を使用してクエリを実行し、 json_Encode()関数を使用して結果配列をJSON文字列にエンコードできます。
この記事では、このプロセスを段階的に実装する方法について説明します。
まず、 MySQLIを使用してデータベースへの接続を作成する必要があります。
$servername = "localhost";
$username = "db_user";
$password = "db_password";
$database = "db_name";
$conn = new mysqli($servername, $username, $password, $database);
// 接続が成功しているかどうかを確認してください
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
すべてのユーザーデータを取得するための例として、ユーザーという名前のテーブルをクエリしてみましょう。
$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);
ここでは、 $ resultはmysqli_resultオブジェクトで、クエリの結果が含まれています。
json_encode()はmysqli_resultオブジェクトを直接エンコードできないため、最初に配列に変換する必要があります。
$data = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$data[] = $row;
}
}
ここでは、fetch_assoc()メソッドを使用して、データの各行を連想配列として取り出し、 $データアレイに追加します。
すべてのクエリ結果を含む配列$データができたので、 json_encode()を使用してjson形式に変換できます。
$jsonResult = json_encode($data);
// 出力 JSON データ
header('Content-Type: application/json');
echo $jsonResult;
ここでは、コンテンツタイプのヘッダーをApplication/JSONに設定して、JSON形式が返されたことをクライアントに伝えます。
上記の手順を組み合わせて、完全なコードは次のとおりです。
<?php
$servername = "localhost";
$username = "db_user";
$password = "db_password";
$database = "db_name";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("接続に失敗しました: " . $conn->connect_error);
}
$sql = "SELECT id, username, email FROM users";
$result = $conn->query($sql);
$data = array();
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$data[] = $row;
}
}
$conn->close();
header('Content-Type: application/json');
echo json_encode($data);
?>
データベース接続情報(ユーザー名、パスワード、データベース名など)が正しいことを確認してください。
実際のプロジェクトでは、セキュリティとパフォーマンスのために、直接スプライシングSQLの代わりに準備されたステートメントを使用することをお勧めします。
インターフェイスをテストする場合は、ブラウザでインターフェイスにアクセスできます。たとえば、次のようにアクセスできます。
https://m66.net/api/get_users.php
これにより、ブラウザまたはフロントエンドコードでJSONユーザーデータを直接取得できます。
関連タグ:
json_encode JSON