0
0

PHPからMySQLのデータをAPIにして発行するレシピ

Last updated at Posted at 2024-08-06

PHPでデータベースの情報を元にAPIを発行するための基本的な流れは以下の通りです。ここでは、MySQLデータベースから情報を取得し、その情報をJSON形式で返すAPIを構築する例を示します。

1. データベース接続の設定

まず、データベースに接続するための設定を行います。config.php というファイルにデータベース接続情報を保存し、他のファイルから呼び出せるようにします。

// config.php
<?php
$host = 'localhost';
$dbname = 'your_database_name';
$user = 'your_username';
$password = 'your_password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $user, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    exit();
}
?>

2. APIエンドポイントの作成

次に、APIエンドポイントを作成します。ここでは、データベースの情報を取得し、JSON形式で返すエンドポイントを作成します。

// api.php
<?php
require 'config.php';

// SQLクエリを作成し、データベースから情報を取得します。
$query = "SELECT * FROM your_table_name";
$stmt = $pdo->prepare($query);
$stmt->execute();

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

// JSON形式でデータを出力します。
header('Content-Type: application/json');
echo json_encode($results);
?>

3. APIにアクセスする

ブラウザやHTTPクライアント(例: Postman)で api.php にアクセスすることで、データベースの情報がJSON形式で表示されます。

http://yourdomain.com/api.php

4. APIの拡張

この基本的なAPIをもとに、例えばリクエストパラメータに応じてデータをフィルタリングしたり、POSTリクエストを処理してデータベースに新しいデータを追加したりすることができます。

例: クエリパラメータを使ったデータフィルタリング

// api.php
<?php
require 'config.php';

// クエリパラメータを取得します。
$param = isset($_GET['param']) ? $_GET['param'] : '';

$query = "SELECT * FROM your_table_name WHERE your_column_name = :param";
$stmt = $pdo->prepare($query);
$stmt->bindValue(':param', $param);
$stmt->execute();

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);

header('Content-Type: application/json');
echo json_encode($results);
?>

このようにすることで、api.php?param=value のような形でAPIを呼び出すと、特定の条件に基づいたデータが返されます。

5. セキュリティとエラーハンドリング

最後に、APIを運用する際にはセキュリティ面とエラーハンドリングに十分な注意を払う必要があります。入力値のバリデーションやSQLインジェクション対策を行い、エラーメッセージを適切に処理することが重要です。

これで、PHPでデータベース情報をもとにAPIを発行する基本的な方法が分かりました。APIを拡張し、用途に応じてカスタマイズすることが可能です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0