试图用PHP将api数据放入数据库?

时间:2013-08-20 01:24:35

标签: php json api

我正在从Groupon的api中提取交易,我不知道如何获取数据并将其放入带有php的数据库中,我知道如何在html中显示它,但不是在数据库中,我需要将它拉进数据库,这样我就可以更好地控制信息了,如果有人知道怎么做或知道更好的方式,我全都是眼睛,哈哈,谢谢

<script type='text/javascript'>

$(function () {
$.getJSON("https://api.groupon.com/v2/deals.json?callback=?", 
{
    client_id: "b252ad3634a4ab2985b79d230ccc4e49a3ea9d19",
    show: "all",
    division_id: "los-angeles"
})
.done(function (data) {
    console.log(data);
    // do whatever processing you need to do to the data
    // right here, then drop it in the div
    $.each(data.deals, function (i, v) {
        $title = $("<h2/>", {
            html: v.title,
            class: "heading"
        });
        $img = $("<img/>", {
            src: v.mediumImageUrl
        });
        $deal = $("<div/>", {
            html: v.highlightsHtml + v.pitchHtml
        });
        $("#main").append($deal);
        $deal.prepend($title, $img);
    });
});
});
</script>

1 个答案:

答案 0 :(得分:1)

<强>理论

好吧,我刚刚开始贯穿整个过程...

首先,了解您正在处理的驱动程序,并研究PHP如何与它们进行交互。看看这个清单并开始阅读...... http://www.php.net/manual/en/refs.database.php

将数据发送到PHP脚本以处理其余部分取决于您获取数据的方式。以下是一些基本流程......

  • 使用jQuery将其拉出来,并在使用AJAX将其发送到php脚本后立即发送它以保存它。 (需要额外的HTTP请求)
  • 使用PHP将其拉出,将其保存到数据库中,然后格式化并在同一页面上输出。 (减慢初始页面加载时间)
  • 用jQuery拉它,格式化它,并允许用户按下一个按钮,然后将该条目转到PHP保存脚本(更灵活,但会大大增加请求)

在获得与数据库的连接之后,您只需使用SQL查询将其保存到表中(最有可能使用INSERT或UPDATE)。使用JSON数据,我更喜欢将其保存到数据类型为TEXT的列中。这里唯一真正的风险是您必须确保可以验证数据。特别是如果数据是从JAVASCRIPT / AJAX源提供给PHP的话!

从该点拉取数据只是使用“SELECT”sql语句。 PHP的数据库模块将提取这些数据并将其放入一个可爱的数组中,使操作变得简单。

<强>实施例

现在就是理论,继承了一些行动。我将选择第一流的想法。现在这个将它保存到数据库中。我没有做任何花哨的检查或真的拉。但这将向您展示如何将ajaxing和保存到php的工作原理。

视图-deals.html

<script type='text/javascript'>

$(function () {
$.getJSON("https://api.groupon.com/v2/deals.json?callback=?", 
{
    client_id: "b252ad3634a4ab2985b79d230ccc4e49a3ea9d19",
    show: "all",
    division_id: "los-angeles"
}).done(function (data) {
    console.log(data);
    // do whatever processing you need to do to the data

    $.post('save-deals.php',{dealData: data}, function(finishData) {
         //This is an optional function for when it has finished saving
    });

    // Your formatting comes next
    ....
});
</script>

现在,将使用AJAX Post调用将您从groupon获得的所有数据(完整)发送到单独的php脚本。我使用post,好吧,因为这就是它的用途。

保存-deals.php

ob_start(); //I like output-buffering because if we need to change headers mid script nothing dies

$DealData = isset( $_POST['dealData'] )?$_POST['dealData']:die("Malformed form data!");

if($DealData!='') {
   $DB = new mysqli("example.com", "user", "password", "database");
   if ($DB->connect_errno) {
      echo "Failed to connect to MySQL: " . $DB->connect_error;
   }

   $DealData = $DB->real_escape_string($DealData); //Sanitize it for MySQL

   if (!$DB->query("INSERT INTO deals(data) VALUES ($DealData)") {
      echo "Insert failed: (" . $DB->errno . ") " . $DB->error;
   } else {
      //AT THIS POINT IT SHOULD HAVE BEEN INSERTED!
      //You could return a success string, or whatever you want now.
   }
} else {
   http_response_code("400");
   die("Bad Request, please check your entry and try again");
}
ob_end_flush(); //Close up the output-buffer

关于该脚本需要注意的一些重要事项是ob_ *函数是完全可选的。 DealData的设置方式是一种非常简便的方法,用于检查帖子数据是否包含该值,并正确设置它;如果没有,那就给出错误。

下一个脚本将向您展示如何从数据库中提取数据,并根据需要对其进行操作。它还会将数据作为JSON信息返回,因此可以与javascript $.getJSON()调用一起使用。这主要是一个参考片段

操纵-deals.php

//First connect to the database!
$DB = new mysqli("example.com", "user", "password", "database");
if ($DB->connect_errno) die("Failed to connect to MySQL: " . $DB->connect_error);

//Get ALL the entries!
if(!$results = $DB->query("SELECT * FROM data")) die("Failed to retrieve data! ".$DB->error);

//Decode the datas!
$returnResults = [];
while($entry = $results->fetch_assoc()) {
   $JSON = json_decode($entry['data']);

   //Manipulate however you wish!
   $JSON->whatever->tags[1]->you->want = "whatever value";

   //Add it to the results!
   $returnResults[] = $JSON;
}
echo json_encode($returnResults);

最后一节只是为了好玩。它将导出包含结果数组的json字符串。并且每个数组的条目都是一个有效的对象,正如groupon给你的那样。希望有所帮助!