PHP中的这个curl请求有什么问题?

PHP中的这个curl请求有什么问题?,php,curl,Php,Curl,我正在尝试将一个示例curl请求写入PHP POST https://a.klaviyo.com/api/v1/list/{{ LIST_ID }}/members curl https://a.klaviyo.com/api/v1/list/dqQnNW/members \ -X POST \ -d api_key=API_KEY \ -d email=george.washington@example.com \ -d properties='{ "$first_name"

我正在尝试将一个示例curl请求写入PHP

POST https://a.klaviyo.com/api/v1/list/{{ LIST_ID }}/members
curl https://a.klaviyo.com/api/v1/list/dqQnNW/members \
  -X POST \
  -d api_key=API_KEY \
  -d email=george.washington@example.com \
  -d properties='{ "$first_name" : "George", "Birthday" : "02/22/1732" }' \
  -d confirm_optin=true
这是我写的代码。我没有得到的部分是如何输入电子邮件作为数据

$data_string = 
            '{
            "email": "'.$email.'"
            }';



        $ch = curl_init("https://a.klaviyo.com/api/v1/list/$form_id/members?api_key=$mail_api_key");

        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
        curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
            'Content-Type: application/json'
            )                                                                       
        );            
我得到的错误是

Array
(
    [status] => 400
    [message] => This request is missing the following required params: "email".
)
文档中的
:“此参数可以作为urlencoded字符串(如'para1=val1¶2=val2&…)传递,也可以作为数组传递,字段名作为键,字段数据作为值。”

因此,您应该将json字符串更改为数组或数据。

不要自己构建json。让PHP为您做这件事,即:
$json['email']='the@mail.com'; $jsonString=json_encode($json)
我不认为
CURLOPT_POSTFIELDS
需要JSON。@戈登,你刚刚改变了我的生活。@kevinkt,不客气:)
<?php
$email='test@gmmail.com';
$data_string =json_encode($email);


$form_id=5;
$mail_api_key=10;

$ch = curl_init("https://a.klaviyo.com/api/v1/list/$form_id/members?api_key=$mail_api_key");

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json'
    )

);