【问题标题】:How to store API JSON response in MYSQL database如何在 MYSQL 数据库中存储 API JSON 响应
【发布时间】: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

标签: php mysql json api


【解决方案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。

    【讨论】:

      猜你喜欢
      • 2020-01-07
      • 2019-06-29
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 2012-02-17
      • 2018-10-03
      相关资源
      最近更新 更多