php 如何通过 Curl 正确插入 quickbase

how to properly insert into quickbase via Curl in php

我使用 quickbase

使用以下 3 个字段创建了 table

姓名,电子邮件,post

现在我正在尝试使用 quickbase 通过 table id 插入 table。

这是文档 API Link API lINK

这是 API Curl 文档

curl -X POST 'https://api.quickbase.com/v1/records' \
-H 'QB-Realm-Hostname: {QB-Realm-Hostname}' \
-H 'User-Agent: {User-Agent}' \
-H 'Authorization: {Authorization}' \
-d {}

这里是示例请求

{
  "to": "bck7gp3q2",
  "data": [
    {
      "6": {
        "value": "This is my text"
      },
      "7": {
        "value": 10
      },
      "8": {
        "value": "2019-12-18T08:00:00.000Z"
      },
      "9": {
        "value": [
          "a",
          "b"
        ]
      },
      "10": {
        "value": true
      },
      "11": {
        "value": "user@quickbase.com"
      },
      "12": {
        "value": "www.quickbase.com"
      },
      "13": {
        "value": [
          {
            "id": "123456.ab1s"
          },
          {
            "id": "254789.mkgp"
          },
          {
            "id": "789654.vc2s"
          }
        ]
      }
    }
  ],
  "fieldsToReturn": [
    6,
    7,
    8,
    9,
    10,
    11,
    12,
    13
  ]
}

这是我目前的努力 当我运行下面的代码时,我有以下错误

{"data":[],"metadata":{"createdRecordIds":[],"lineErrors":{"1":["Can not find record by ID \"My First post\"."]},"totalNumberOfRecordsProcessed":1,"unchangedRecordIds":[],"updatedRecordIds":[]}}{"data":[],"metadata":{"createdRecordIds":[],"lineErrors":{"1":["Can not find record by ID \"My First post\"."]},"totalNumberOfRecordsProcessed":1,"unchangedRecordIds":[],"updatedRecordIds":[]}}

这是我的代码

<?php

$access_t ="my_access_token-goes here";
$url="https://api.quickbase.com/v1/records";
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
$useragent ='my-user-agent goes here';

$quicbase_domain= 'my-quickbase-domain-goes-here';

$data='

{
  "to": "my-table-id-goes-here",
  "data": [
    {


      "1": {
        "value": "nancy more"
      },
      "2": {
        "value": "nancy@gmail.com"
      },

"3": {
        "value": "My First post"
      }

    }
  ]
  
}

';

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"QB-Realm-Hostname: quicbase_domain",
"User-Agent: $useragent",
"Authorization: QB-USER-TOKEN $access_t",
'Content-Type:application/json'
));  

curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($ch,CURLOPT_POSTFIELDS, $data);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
 echo $response = curl_exec($ch);

curl_close($ch);

print_r($response);

相同的端点用于插入和更新,Quick Base 使用包含的键字段来区分两者。在我的经验中,字段 ID #3 一直是“记录 ID#”字段; Quick Base 为每个新 table 自动创建的字段之一,以及它用作默认键字段的字段。由于您的数据数组包含字段 ID #3 的值,因此 Quick Base 将您的请求解释为更新,它找不到 ID 为“My First Post”的记录。还有一个问题是字段 ID #3 需要一个数字,但 Quick Base 的错误响应不够复杂,无法提供该反馈。

我认为您请求的问题在于您的字段 ID 有误。 1、2、3分别对应自动生成的“创建日期”、“修改日期”、“记录ID#”字段。您为 table 创建的字段可能从字段 ID #6 开始。如果您进入 Quick Base 并查看 table 的属性,您应该能够看到字段列表及其字段 ID(如果您没有看到字段 ID 列,您可以选择显示它在高级选项中)。在您的请求中使用正确的字段 ID,它应该会按预期工作。