如何在curl脚本中处理多个选择值

时间:2015-09-11 11:09:35

标签: php curl salesforce

我将一些数据发送到SalesForce,但是我遇到了一些问题,这些问题的目的地是多选。我不相信这是针对Salesforce的,所以我在这里发布了这个问题。

这是我目前的剧本:

<?php

  if($_POST['cis'] == '1'){
    $query['00ND0000003viLy'] = array(
      'Essential',
      'CIS'
    );
  }else{
     $query['00ND0000003viLy'] = 'Essential';
  }

  foreach ( $query as $key => $value) {
    $post_items[] = $key . '=' . $value;
  }
  $post_string = implode ('&', $post_items);

  $curl = curl_init();
  curl_setopt($curl, CURLOPT_URL, 'xxx');
  curl_setopt($curl, CURLOPT_POST, count($post_items));
  curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
  curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);

  $result = curl_exec($curl);

  curl_close($curl);

  echo $result;

?>

在SalesForces&#39;结束$query['00ND0000003viLy']的值最终以字符串形式Array(当它与条件匹配时)。

如何为$query['00ND0000003viLy']分配多个值,以便将其解释为多次选择?

2 个答案:

答案 0 :(得分:1)

好吧事实证明这可能是特定于销售人员的事情,tl; dr是值必须是单个字符串并且用分号分隔。所以这是我的例子给出的工作代码:

if($_POST['cis'] == '1'){
    $query['00ND0000003viLy'] = 'Essential; CIS';
  }else{
     $query['00ND0000003viLy'] = 'Essential';
  }

对于需要更动态解决方案的其他人来说,沿着这些方向应该做的事情:

join(';', $query['00ND0000003viLy'])

(再次,根据我原来的例子)。

答案的关键点在这里追踪:https://developer.salesforce.com/forums/?id=906F00000008ssBIAQ

哦,@sanderbee的答案包含了一种更简洁的方式来构建查询。

答案 1 :(得分:0)

将参数添加为http查询字符串,如下所示:

$post_string = http_build_query($query);

curl_setopt($curl, CURLOPT_URL, 'xxx');
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_string);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);