首页
学习
活动
专区
圈层
工具
发布

如何在php中从mysql数据库创建JSON API服务

在 PHP 中从 MySQL 数据库创建 JSON API 服务,通常涉及以下步骤:

  1. ​连接 MySQL 数据库​
  2. ​查询数据库获取数据​
  3. ​将数据转换为 JSON 格式​
  4. ​通过 HTTP 响应返回 JSON 数据​

以下是完整的实现方法,包括 ​​基础版​​ 和 ​​进阶版(支持 GET/POST 参数)​​。


​1. 基础版:静态查询并返回 JSON​

假设我们有一个 MySQL 数据库表 users,包含 id, name, email 字段,我们要返回所有用户数据。

​步骤 1:创建 PHP 文件(如 api.php)​

代码语言:javascript
复制
<?php
// 1. 连接 MySQL 数据库
$host = "localhost";      // 数据库主机
$dbname = "your_database"; // 数据库名
$username = "root";       // 数据库用户名
$password = "";           // 数据库密码

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}

// 2. 查询数据
$sql = "SELECT * FROM users";
$stmt = $conn->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC); // 获取关联数组

// 3. 转换为 JSON 并返回
header('Content-Type: application/json'); // 设置响应头为 JSON
echo json_encode($result, JSON_PRETTY_PRINT); // JSON_PRETTY_PRINT 可选,美化输出

// 4. 关闭连接(PDO 会自动关闭)
$conn = null;
?>

​测试 API​

  • 在浏览器访问 http://your-server/api.php,会返回类似:
代码语言:javascript
复制
[
    {
        "id": 1,
        "name": "张三",
        "email": "zhangsan@example.com"
    },
    {
        "id": 2,
        "name": "李四",
        "email": "lisi@example.com"
    }
]

​2. 进阶版:支持 GET/POST 参数动态查询​

假设我们要根据 id 查询单个用户,或根据 name 搜索用户。

​修改 api.php 支持参数​

代码语言:javascript
复制
<?php
// 1. 连接数据库(同上)
$host = "localhost";
$dbname = "your_database";
$username = "root";
$password = "";

try {
    $conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("数据库连接失败: " . $e->getMessage());
}

// 2. 获取请求参数(GET 或 POST)
$id = isset($_GET['id']) ? intval($_GET['id']) : null; // 获取 id 参数
$name = isset($_GET['name']) ? trim($_GET['name']) : null; // 获取 name 参数

// 3. 动态构建 SQL 查询
$sql = "SELECT * FROM users";
$params = []; // 用于预处理语句的参数

if ($id !== null) {
    $sql .= " WHERE id = :id";
    $params[':id'] = $id;
} elseif ($name !== null) {
    $sql .= " WHERE name LIKE :name";
    $params[':name'] = "%$name%"; // 模糊搜索
}

$stmt = $conn->prepare($sql);
$stmt->execute($params);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

// 4. 返回 JSON
header('Content-Type: application/json');
echo json_encode($result, JSON_PRETTY_PRINT);

// 5. 关闭连接
$conn = null;
?>

​测试 API​

  • ​查询单个用户​​:http://your-server/api.php?id=1
  • ​搜索用户​​:http://your-server/api.php?name=张
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的文章

领券