Updating subscribers in a list using cURL and Mailchimp API v3 Updating subscribers in a list using cURL and Mailchimp API v3 curl curl

Updating subscribers in a list using cURL and Mailchimp API v3


I figured out where I'm going wrong. When the user is initially added to the list the response provides an ID. I need to store the ID in my database with those person's details and reference the ID in the url I'm making a call to when I want to update the user's details in the Mailchimp List.

https://us2.api.mailchimp.com/3.0/lists/<list_id_goes_here>/members/<members_id_goes_here>

Thanks @TooMuchPete for the correct curl command.

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");


You're looking for the CURLOPT_CUSTOMREQUEST option in cURL.

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");

But, since this is now your second question in as many days asking how to use built-in cURL library, it might be worth using something a little better. If you're on PHP 5.4 or better, I recommend Guzzle. PHP Requests is also very good, though, and works with PHP 5.3.


Try this one. It's working for me. I am using this function. Hope it should be solved your problem.

<?php/** * Created by PhpStorm. * User: Faisal * Website: www.faisal-ibrahim.info * Date: 2/12/2016 * Time: 10:07 AM */if (isset($_POST['email'])) {    $email = $_POST['email'];} else {    $email = 'faisal.im048@gmail.com';}$data              = [    'email'     => $email,    'status'    => 'subscribed',    'firstname' => 'Faisal',    'lastname'  => 'Ibrahim'];$api_response_code = listSubscribe($data);echo $api_response_code;/** * Mailchimp API- List Subscribe added function.In this method we'll look how to add a single member to a list using the lists/subscribe method.Also, We will cover the different parameters for submitting a new member as well as passing in generic merge field information. * * @param array $data Subscribe information Passed. * * @return mixed */function listSubscribe(array $data){    $apiKey = "cf8a1fd222a500f27f9e042449867c7c-us15";//your API key goes here    $listId = "e8f3f5f880";// your trageted list ID    $memberId   = md5(strtolower($data['email']));    $dataCenter = substr($apiKey, strpos($apiKey, '-') + 1);    $url        = 'https://' . $dataCenter . '.api.mailchimp.com/3.0/lists/' . $listId . '/members/' . $memberId;    $json       = json_encode([        'email_address' => $data['email'],        'status'        => $data['status'], // "subscribed","unsubscribed","cleaned","pending"        'merge_fields'  => [            'FNAME' => $data['firstname'],            'LNAME' => $data['lastname']        ]    ]);    $ch = curl_init($url);    curl_setopt($ch, CURLOPT_USERPWD, 'user:' . $apiKey);    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);    curl_setopt($ch, CURLOPT_TIMEOUT, 10);    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);    $result   = curl_exec($ch);    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);    curl_close($ch);    return $httpCode;}