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;}