comment insérer correctement dans quickbase via Curl en php

Sep 28 2020

J'ai créé un tableau avec les 3 champs suivants avec quickbase

nom, email, message

J'essaye maintenant d'insérer dans la table via l'identifiant de table avec la base rapide.

voici la documentation API Link API lINK

voici la documentation 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 {}

voici l'exemple de demande

{
  "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": "[email protected]"
      },
      "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
  ]
}

Voici mon effort jusqu'à présent Lorsque j'exécute le code ci-dessous, j'ai l'erreur suivante

{"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":[]}}

voici mon code

<?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": "[email protected]"
      },

"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);

Réponses

1 NathanHawe Sep 29 2020 at 01:01

Le même point de terminaison est utilisé à la fois pour l'insertion et la mise à jour et Quick Base utilise l'inclusion du champ clé pour faire la distinction entre les deux. Dans mon champ d'expérience, l'ID # 3 a toujours été le champ "Record ID #"; l'un des champs que Quick Base crée automatiquement pour chaque nouvelle table et celle qu'il utilise comme champ clé par défaut. Étant donné que votre tableau de données contient une valeur pour le champ ID # 3, Quick Base interprète votre demande comme une mise à jour dans laquelle il ne peut trouver aucun enregistrement avec l'ID «My First Post». Il y a aussi le problème que le champ ID # 3 attend un nombre, mais la réponse d'erreur de Quick Base n'est pas assez sophistiquée pour donner ce retour.

Je pense que le problème avec votre demande est que vous avez les mauvais ID de champ. 1, 2 et 3 correspondent aux champs générés automatiquement de «Date de création», «Date de modification» et «ID d'enregistrement». Les champs que vous avez créés pour votre table commencent probablement au champ ID # 6. Si vous allez dans Quick Base et regardez les propriétés de votre table, vous devriez pouvoir voir une liste de champs et leurs ID de champ (si vous ne voyez pas la colonne ID de champ, vous pouvez choisir de l'afficher dans Options avancées) . Utilisez les ID de champ corrects dans votre demande et cela devrait fonctionner comme prévu.