如何在MySQL数据库中存储API返回的JSON响应并按JSON格式读取
实现方案
一、先修复现有存储逻辑的隐患
你当前直接拼接JSON字符串到SQL语句的写法有两个严重问题:
- 如果返回的JSON内容中包含单引号
',会直接导致SQL语法报错,存储失败 - 存在SQL注入风险,一旦API返回的内容被恶意构造,会威胁数据库安全
推荐用预处理语句优化存储逻辑,代码示例:
$json_response = file_get_contents("api_url"); // 使用预处理语句避免注入和语法问题 $stmt = mysqli_prepare($conn, "UPDATE matchinfo SET jsondata = ?"); // 绑定参数,s代表字符串类型 mysqli_stmt_bind_param($stmt, "s", $json_response); // 执行语句 mysqli_stmt_execute($stmt); mysqli_stmt_close($stmt);
二、读取JSON格式数据的实现
因为你存储的就是原生JSON字符串,所以直接从数据库查询出jsondata字段的内容,不需要额外处理就是标准JSON格式,直接返回给前端即可。示例代码:
// 查询jsondata字段,可根据业务需求补充WHERE条件筛选对应行 $query = mysqli_query($conn, "SELECT jsondata FROM matchinfo LIMIT 1"); $row = mysqli_fetch_assoc($query); // 输出前加上正确的Content-Type响应头,方便前端识别格式 header('Content-Type: application/json'); echo $row['jsondata'];
如果需要在服务端操作JSON内容,可以用json_decode($row['jsondata'], true)把JSON转为PHP数组使用。
内容的提问来源于stack exchange,提问作者shakky
相关产品推荐
相关产品推荐

