从cURL请求到表单的结果

时间:2012-02-17 16:06:47

标签: php mysql api curl

正如我在上一个问题中所提到的,我读到了有关cURL以及如何使用它的信息。我收到了以下API的请求:api.openkvk.nl(用荷兰语,很遗憾)工作:

$get = $_POST['bedrijfsnaam'];
$get = str_replace(" ","%20",$get);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.openkvk.nl/php/SELECT%20*%20FROM%20kvk%20WHERE%20bedrijfsnaam%20=%20'$get'%20LIMIT%201;");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
print("<pre>"); print_r($result); print("</pre>");
$kvks = $result[0]["RESULT"]["ROWS"][0][2];
echo $kvks; 
curl_close($ch);

我以下面的形式得到了结果:

array(array("RESULT"=>array("TYPES"=>array("bigint","varchar","int","int","varchar","varchar","varchar","varchar","varchar","varchar","bigint","varchar","decimal","decimal","date"),"HEADER"=>array("kvk","bedrijfsnaam","kvks","sub","adres","postcode","plaats","type","status","website","vestiging","rechtsvorm","lat_rad","lon_rad","anbi"),"ROWS"=>array(array("526937320000","Unicmedia","52693732","0","Terschellingstraat 12","1825ND","Alkmaar","Hoofdvestiging",NULL,NULL,"22611126",NULL,NULL,NULL,NULL)))))

我想做的是以下内容:

将这些值放在数据库中:kvks,adres,postcode和plaats in a form(以便我可以编辑它们)。

我不知道该怎么做。你能给我一个解释吗?

PS我是API的新手,所以我还不了解所有内容。

2 个答案:

答案 0 :(得分:2)

更新

他们的API将其作为php字符串返回 - 将您的网址部分/php/更改为/json/

然后,将其设为$result = json_decode(curl_exec($ch), true);

现在数组访问应该可以工作。


要获取kvks的值,假设您发布的值是$result,则使用$kvks = $result[0]["RESULT"]["ROWS"][0][2]

(看起来您正在发布print_r的结果 - 尝试将其包含在<pre>标记中,当您显示更加格式化的结果时)

由于你有PHP获取值,你可以简单地输出一个预先填充它们的HTML表单:

<form action="savedata.php" method="post">
<?php
    echo "<input type='text' name='blah' value=\"" . htmlspecialchars($blah) ."\"><br>";
 ?>

然后,如果$blahasdf,则输出<input type='text' name='blah' value="asdf">

当您将其提交到savedata.php方法时,您可以根据需要将修改后的值(现在通过$_POST['blah']找到)插入到数据库中。

答案 1 :(得分:0)

从我的实验看来,这个API似乎正在返回PHP代码,这必须是eval'd。评估是一个非常糟糕的主意。

我可以通过替换/ php / with / json /

来建议使用API​​的JSON方法

然后,API将返回一个JSON字符串,您可以将其解码为对象/数组

您还需要将curl_setop($ch, CURLOPT_RETURNTRANSFER,0);添加到您的卷曲请求

以下是一些修订后的代码

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.openkvk.nl/json/SELECT%20*%20FROM%20kvk%20WHERE%20bedrijfsnaam%20=%20'$get'%20LIMIT%201;");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
$result = curl_exec($ch);
curl_close($ch);
$apiResult = json_decode($result, true);

$ apiResult现在将包含一个包含结果的数组

var_dump($apiResult)会给你

array
  0 => 
    array
      'RESULT' => 
        array
          'TYPES' => 
            array
              ...
          'HEADER' => 
            array
              ...
          'ROWS' => 
            array
              ...

现在您已拥有该阵列,您应该可以轻松地将其插入到数据库中。