如何在 MYSQL 数据库中存储 API JSON 响应

Posted

技术标签:

【中文标题】如何在 MYSQL 数据库中存储 API JSON 响应【英文标题】:How to store API JSON response in MYSQL database 【发布时间】:2022-01-06 14:43:49 【问题描述】:

我正在使用以 JSON 格式提供数据的 API。我正在尝试将 JSON 响应存储在 mysql 数据库中(原样)

然后以 JSON 格式从数据库中重新获取它。你可能想知道我为什么要这样做,好吧,我使用的是一个有限制的付费 API。的请求。为了防止多个 API 调用,我想通过我的服务器提供 API 响应(所以基本上应用程序用户会轮询我的服务器以获取 JSON 响应而不是直接调用 API)

所以我创建了一个名为“matchinfo”的表,其中有一列名为“jsondata”,其类型为 LONGTEXT

$json_response = file_get_contents("api_url"); // storing json format response

$update_data = "UPDATE matchinfo SET jsondata = '$json_response'"; // Succesfully stored it

$update_query = mysqli_query($conn,$update_data); 


// how can I again fetch it in the JSON format 

【问题讨论】:

请更新您的帖子以显示失败的原因。有错误吗?如果是这样,它是什么?数据被截断了吗? 由于某种未知原因,它仅在列中存储 JSON 响应的第一行 ("success":1) 没有抛出任何错误,否则我会在问题@Luke 大声笑,我想通了!忽略它!这是一个非常愚蠢的错误 但是您能告诉我如何将其重新获取为 JSON 响应吗? 最后一个问题,如您所知,我试图阻止多个 API 调用,这是一种正确的方法或方法吗? (将 API 响应存储在数据库中,然后通过数据库提供)@Luke 【参考方案1】:

我认为您的问题是“如何使用 mysqli 提取数据”。

//connection
$mysqli = new mysqli("localhost", "user", "pass", "database");

//obtaining the jsondata.
$result = $mysqli->query("SELECT jsondata FROM matchinfo");
$row = $result->fetch_array(MYSQLI_ASSOC);

//The data is like file_get_contents("api_url");
$json_response = $row['jsondata']; //json string

//If you want to use data as array.
$json = json_decode($json_response, true); //array

【讨论】:

【参考方案2】:

我猜你要找的是函数“json_decode”。

你可以这样使用它:

$databaseValue = '"field": "value"';    // Example, this represents your string you have stored in your database
$fetchedJson = json_decode($databaseValue, true); // JSON Value

你需要 json_decode 里面的 true,因为你希望函数的结果是一个 JSON 数组。如果你在那里放一个假,函数的结果将是一个对象。

您可以阅读更多关于它的信息in the php documentation。

【讨论】:

以上是关于如何在 MYSQL 数据库中存储 API JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vapor 3中从JSON响应中保存父子关系

如何从 Vapor 3 中的 JSON 响应中保存父子关系

如何将从接口取到的json数据存入mysql数据库

如何在 MySQL 数据库中存储 JSON 字符串

在 PHP 中处理 JSON API 响应以将数据存储为变量

如何定义一个表来存储 MySQL 数据库中的 JSON 对象?