如何在 curl 脚本中处理多个 select 值
How to handle multiple select values in a curl script
我正在将一些数据发送到 SalesForce,但我遇到了一些针对多个 select 的值的问题。我不相信这是 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 的最后,$query['00ND0000003viLy']
的值最终以字符串形式出现,Array
(当它符合条件时)。
如何为 $query['00ND0000003viLy']
分配多个值,以便将其解释为多个 select?
将参数添加为 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);
好的,事实证明这很可能是特定于 salesforce 的东西,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 的回答包含一种更简洁的构建查询的方法。
我正在将一些数据发送到 SalesForce,但我遇到了一些针对多个 select 的值的问题。我不相信这是 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 的最后,$query['00ND0000003viLy']
的值最终以字符串形式出现,Array
(当它符合条件时)。
如何为 $query['00ND0000003viLy']
分配多个值,以便将其解释为多个 select?
将参数添加为 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);
好的,事实证明这很可能是特定于 salesforce 的东西,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 的回答包含一种更简洁的构建查询的方法。