2011-11-10 62 views
0

我使用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->错误 - >消息;”。问题是什么?

谢谢

+0

是'result'或'errors'是不是一个对象。 'sforceClient-> create()'返回什么?基本上,'$ results'应该是一个具有'errors'属性的对象数组,它又是一个具有'message'属性的对象。 – abhinav

+0

php告诉你的是'$ result'不是一个对象,或者'$ result-> errors'不是一个对象。由于这是一个SOAP方法,所以'$ result-> errors'实际上可能是一个包含消息对象的数组。尝试'var_dump($ result); var_dump($ result-> errors);'看看你正在处理什么; – yannis

回答

0

这意味着无论$结果包含,它不是一个对象。试着对变量$ results做一个var_dump(),看看里面实际是什么。然后你可以正确引用它。

+0

$ results = $ sforceClient-> create($ applications,'Application__c'); \t \t \t \t print_r($ results);它显示输出为stdClass对象([id] => a0DZ00000008dUOMAY [成功] => 1) 注意:试图获取D:\ xampp \ htdocs \ bakul_project \ insertToApp.php中的非对象的属性,第287行 – user989184

+0

var_dump($ results) –

+0

object(stdClass)#7(2){[“id”] => string(18)“a0DZ00000008dUTMAY”[“success”] => bool(true)} 注意:试图获取属性第289行的D:\ xampp \ htdocs \ bakul_project \ insertToApp.php中的非对象 – user989184

1

注意$结果是一个数组..

试试这个:

 
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') . ']'); 
} 
相关问题