0

我有如下 curl 请求:

curl -d 'api_user=your_sendgrid_username&api_key=your_sendgrid_password&list=my_list&data[]={"email":"address1@domain.com","name":"contactName1"}&data[]={"email":"address2@domain.com","name":"contactName2"}' https://sendgrid.com/api/newsletter/lists/email/add.json

现在我在帖子中使用以下 php 代码

if(mysql_num_rows($res) > 0) {
    $data = array();
    while($new_signups = mysql_fetch_assoc($res)){
        $data['email'] = $new_signups['uEmail'];
        $data['name'] = $new_signups['firstName']." ".$new_signups['lastName'];
    }
}
$params = array(
    'api_user'  => $sengrid_user,
    'api_key'   => $sendgrid_pass,
    'list' =>'TestAlwin',
    'data' =>json_encode($data)
  );
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $request);
curl_setopt ($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$resp = curl_exec($ch);
curl_close($ch);

但这只会照顾最后的结果。如何传递上面 curl 请求中给出的更多数据值?或者我需要在循环中运行 curl 传输?

4

2 回答 2

0

您可以创建数据的多维数组。每个数组值都包含另一个包含电子邮件和姓名数据的数组:

$c=1;
while($new_signups = mysql_fetch_assoc($res)){

    $data[$c]['email'] = $new_signups['uEmail'];
    $data[$c]['name'] = $new_signups['firstName']." ".$new_signups['lastName'];
    $c++;

}

所以你的数据会是这样的:

array(
   1 => array(
      'email' => 'test@test.nl',
      'name' => 'John'

   ),
   2 => array(
      'email' => 'test@gmail.com',
      'name' => 'Jack'

   ),
)
于 2013-09-13T08:49:16.977 回答
0

你正在覆盖你的数据数组总是试试这个

//multiple array
$data1 = array()


if(mysql_num_rows($res) > 0) {

    while($new_signups = mysql_fetch_assoc($res)){
        $data = array();
        $data['email'] = $new_signups['uEmail'];
        $data['name'] = $new_signups['firstName']." ".$new_signups['lastName'];
    //bind your single array here
    $data1[] = $data;
    }
}
$params = array(
    'api_user'  => $sengrid_user,
    'api_key'   => $sendgrid_pass,
    'list' =>'TestAlwin',
    'data' =>json_encode($data1)
  );
于 2013-09-13T09:00:37.980 回答