CartoDB - SQL API - 用php发布请求

时间:2015-08-30 09:14:54

标签: php http cartodb

在我的应用程序中,我想用我的php脚本向我的cartodb-table发送一些少量数据。 我想使用SQL-API。我的应用程序以如下形式解析数据:

https://{account}.cartodb.com/api/v2/sql?q=INSERT INTO test_table (column_name, column_name_2, the_geom) VALUES ('this is a string', 11, ST_SetSRID(ST_Point(-110, 43),4326))&api_key={Your API key}

我尝试了多个函数http_get, file_get_contents, http_request,但没有任何内容将数据传递给我的帐户。当我复制/粘贴URL并在浏览器中打开时,所有内容都会被添加。

什么是正确的功能?那里有很多不同的...... PHP-HTTP-Functions

修改

使用this solution中的代码,当我打印出响应时,我收到此错误:

{"error":["syntax error at end of input"]}
在浏览器中我得到了这个:

{"rows":[],"time":0.038,"fields":{},"total_rows":1}

我的请求代码:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $fullurl);
// Set so curl_exec returns the result instead of outputting it.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// Get the response and close the channel.
$response = curl_exec($ch);
curl_close($ch);
print($response);

1 个答案:

答案 0 :(得分:1)

找到结果:CURLOPT_POST => 1可行!

$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => "https://".$cartodb_key.".cartodb.com/api/v2/sql",
CURLOPT_USERAGENT => 'Sample cURL Request',
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => array(
    api_key => $api_key,
    q => "INSERT INTO spot (".implode (", ", array_keys($data)).") VALUES (".implode (", ", $data).")"
  )
));
$response = curl_exec($ch);
curl_close($ch);