我使用Soapclient从php插入一些名为Application__c的salesforce对象的数据。连接成功后,我编写了以下代码
$applications = array();
$updateFields = array();
if($_POST['savingsAccountBankName'] != ''){
$updateFields['savings_account_bank_name__c']= $_POST['savingsAccountBankName'];
}
if($_POST['AutoMake'] != ''){
$updateFields['Auto_make__c']= $_POST['AutoMake'];
}
if($_POST['AutoLicense'] != ''){
$updateFields['Auto_license__c']= $_POST['AutoLicense'];
}
$sObject = new sObject();
$sObject->type = 'Application__c';
$sObject->fields = $updateFields;
array_push($applications, $sObject);
try {
$results = $sforceClient->create($applications,'Application__c');
foreach ($results as $result)
{
$errMessage = $result->errors->message;
echo $errMessage;
}
} catch (Exception $e) {
echo 'Salesforce Upsert Error. Please try again later.';
echo '<pre>';
print_r($e);
echo '</pre>';
}
我收到错误“试图获取非对象的属性”行“$ errMessage = $ result-&gt; errors-&gt; message;”。有什么问题?
感谢
答案 0 :(得分:1)
请注意 $ result 是一个数组..
试试这个:
if (!isset($result[0]->success) || ($result[0]->success!=1)) { $strErrCode = isset($result[0]->errors[0]->statusCode)? $result[0]->errors[0]->statusCode:'CANNOT_INSERT'; $strErrMsg = isset($result[0]->errors[0]->message)? $result[0]->errors[0]->message:'Error Trying to insert'; $arrResult = array( 'errorCode' => $strErrCode, 'errorMsg' => $strErrMsg, 'id' => '', ); error_log( 'Error Trying to insert - [' . $strErrMsg . '] - [' . $strErrCode . ']'); } if (isset($result[0]->success) && ($result[0]->success==1)) { $arrResult = array( 'errorCode' => 'SUCCESS_INSERT', 'errorMsg' => 'Insert Success', 'id' => isset($result[0]->id)?$result[0]->id:'1', ); error_log( 'Success insert - [' . (isset($result[0]->id)?$result[0]->id:'1') . ']'); }
答案 1 :(得分:0)
这意味着无论$ results包含什么,它都不是对象。尝试对变量$ results执行var_dump()并查看其中的实际内容。然后你可以正确地引用它。