如何使用PHP提取API数据并将其添加到数据库中?

时间:2013-11-01 21:00:09

标签: php json curl

我希望从CrunchBase API中提取公司列表的数据,然后将该数据添加到数据库中的选择表中。我真的不知道从哪里开始。我一直在看cURL。

我现在在哪里:

$url = "http://api.crunchbase.com/v/1/company/audible-coffee.js?api_key=API_KEY&callback=?";
$data = get_data($url);
// Note: ideally you should use DOM manipulation to inject the <base>
// tag inside the <head> section
$data = str_replace("<head>", "<head><base href=\"$url\">", $data);
echo $data;


function get_data($url) {
  $ch = curl_init();
  $timeout = 5;
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
  curl_close($ch);
  return $data;
}

我想我现在应该解析它,然后将数据存储在数据库中。

我在解析数据时找到代码的工作如下:

$json_string = '<url.json>';

$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, true);
print_r($obj['Result']);

不幸的是,我不知道自己在做什么,因此我们非常感谢您对此有何变化或从何处着手。

3 个答案:

答案 0 :(得分:5)

更简单 - 直接访问网址,不要打扰cURL:

$url = "http://api.crunchbase.com/v/1/company/audible-coffee.js?api_key=API_KEY&callback=?";
$jsondata = file_get_contents($url);
$obj = json_decode($jsondata);

我假设你的问题中的URL是一个保证返回JSON字符串的API。我在第一个代码示例中没有理解str_replace的目的。

答案 1 :(得分:1)

要根据您提供的cURL方法回答您的问题,在运行curl函数时,不能将任何数据保存到$data变量。这可以防止您获得任何回报。

修正:

$url = "http://api.crunchbase.com/v/1/company/audible-coffee.js?api_key=API_KEY&callback=?";
$data = get_data($url);
// Note: ideally you should use DOM manipulation to inject the <base>
// tag inside the <head> section
$data = str_replace("<head>", "<head><base href=\"$url\">", $data);
echo $data;

function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

正如您在致电curl_close($ch);之前所见,我将curl_exec($ch);的回复保存到$data。现在我在屏幕上显示“Developer Inactive”文本(我自己没有假设API密钥)。所以现在当我返回$data变量时,我可以按照我认为合适的方式操纵返回。

答案 2 :(得分:0)

你也可以试试......

header("Content-type: application/xml");
  $token="AUTHTOKEN";
  $url = "http://api.crunchbase.com/v/1/company/audible-coffee.js?api_key=API_KEY&callback=?";
  $param= "authtoken=".$token.";
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt($ch, CURLOPT_TIMEOUT, 30);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
  $result = curl_exec($ch);
  curl_close($ch);
  echo $result;
  return $result;