试图获得非对象的属性

时间:2011-11-10 07:19:09

标签: php soap salesforce

我使用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;”。有什么问题?

感谢

2 个答案:

答案 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()并查看其中的实际内容。然后你可以正确地引用它。