如何在 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 响应的主要内容,如果未能解决你的问题,请参考以下文章