2016-11-02 4 views
0

vtiger webservice에서 문제가 발생합니다. 어떤 몸이라도 이것을 해결할 수 있습니까? 이 오류는 "쿼리 실패 : 작업 수행 권한이 이름에 대해 거부되었습니다."라는 vtiger 웹 서비스 쿼리에서 모듈 레코드 중 하나를 나열하려고합니다.vtiger webservice 쿼리에서 "쿼리를 수행하지 못했습니다. 이름을 거부했습니다."모듈 레코드 중 하나를 나열하려고합니다.

내 코드는 다음과 같습니다

<?php 
require_once("../vtlib/Vtiger/Net/Client.php"); 
require_once("../include/Zend/Json.php"); 

class CRMwebrequests { 
    var $endpointUrl; 
    var $userName; 
    var $userKey; 
    var $token; 

function __construct($url, $name, $key) { 
    $this->endpointUrl=$url; 
    $this->userName=$name; 
    $this->userKey=$key; 
    $this->token=0; 
} 

function getChallenge() { 
    $httpc = new Vtiger_Net_Client($this->endpointUrl); 
    $params["operation"]="getchallenge"; 
    $params["username"]=$this->userName; 
    $response = $httpc->doGet($params); 
    $httpc->disconnect(); 
    $jsonResponse = Zend_JSON::decode($response); 
    if($jsonResponse["success"]==false) 
    die("getChallenge failed:".$jsonResponse["error"]["message"]."<br>"); 

    $challengeToken = $jsonResponse["result"]["token"]; 

    return $challengeToken; 
} 

function Login() { 
    $token = $this->getChallenge(); 
    $generatedKey = md5($token.$this->userKey); 
    $httpc = new Vtiger_Net_Client($this->endpointUrl); 
    //POST containing array 
    $response = $httpc->doPost(
      array("operation"=>"login", "username"=>$this->userName, 
      "accessKey"=>$generatedKey)); 
    $httpc->disconnect(); 
    $jsonResponse = Zend_JSON::decode($response); 
    if($jsonResponse["success"]==false) {  
     die("Login failed:".$jsonResponse["error"]["message"]."<br>Token:".$token."<br>"); 
    } 
    $sessionId = $jsonResponse["result"]["sessionName"]; 
    //save session id 
    $this->token=$sessionId; 
    //25765819bac6eb068 
    return true; 
} 

function Query($query) { 
    //handle "special" characters 
    $queryParam = ($query); 
    $params = array("sessionName"=>$this->token,"operation"=>"query", "query"=>$queryParam); 

    $httpc = new Vtiger_Net_Client($this->endpointUrl); 
    $response = $httpc->doGet($params); 

    $jsonResponse = Zend_JSON::decode($response); 
    echo "<pre>"; 
    print_r($jsonResponse); 
    if($jsonResponse["success"]==false) { 
     die("Query failed:".$jsonResponse["error"]["message"]); 
    } 
    //Array of retrieved objects 
    $retrievedObjects = $jsonResponse["result"]; 
    return $retrievedObjects; 
} 


function delete($id){ 
    $params = array("sessionName"=>$sessionId, "operation"=>'delete', "id"=>$id); 
    //delete operation request must be POST request. 
    $httpc = new Vtiger_Net_Client($this->endpointUrl); 
    $response = $httpc->doPost($params); 
    $jsonResponse = Zend_JSON::decode($response); 
    if($jsonResponse['success']==false){ 
     die('delete failed:'.$jsonResponse['error']['errorMsg']); 
    } 
    //Array of retrieved objects 
    $retrievedObjects = $jsonResponse["result"]; 
    return $retrievedObjects; 
} 

function LogOut() { 
    $params = array("operation"=>"logout","sessionName"=>$this->token); 
    $httpc = new Vtiger_Net_Client($this->endpointUrl); 
    $response = $httpc->doGet($params); 
    $jsonResponse = Zend_JSON::decode($response); 
    if($jsonResponse["success"]==false) { 
     //handle the failure case. 
     die("Logout failed:".$jsonResponse["error"]["message"]); 
    } 
    return true; 
} 
} 

    $CRMurl = 'http://localhost/vtigercrm'; 

    $APPkey = 'R6JNLCLkjCFTm44b'; 

    $crmobject = new CRMwebrequests($CRMurl."/webservice.php", "admin", $APPkey); 

if ($crmobject->Login()) { 

$wsquery = "SELECT * FROM vtiger_account"; 
$Details = $crmobject->Query($wsquery); 


echo "<b>Accounts</b><br>"; 
    echo "<table border='1'>"; 
     echo "<tr>"; 
      echo "<th>Account No</th>"; 
      echo "<th>Accoun Name</th>"; 
      echo "<th>Account Type</th>"; 
      echo "<th>Industry</th>"; 
      echo "<th>Ownership</th>"; 
     echo "</tr>"; 
    foreach ($Details as $value){ 
     echo "<tr>"; 
      echo "<td>".$value["account_no"]."</td>"; 
      echo "<td>".$value["accountname"]."</td>"; 
      echo "<td>".$value["account_type"]."</td>"; 
      echo "<td>".$value["industry"]."</td>"; 
      echo "<td>".$value["ownership"]."</td>"; 
     echo "</tr>"; 
    } 
    echo "</table></br>"; 

} 
else { 
echo "Error!"; 
} 
?> 

답변

0

당신은 당신의 "SQL"쿼리에 대한 실제 DB의 테이블 이름을 사용하지만 안 그런에만 모듈 이름 : 제레미 @

$query = "SELECT * FROM accounts;"; 
or 
$query = "SELECT * FROM Contacts WHERE lastname='Valiant';"; 
+0

좋아하지만 어떻게 두 개의 다른 테이블을 사용하려면? 나는이 같은 쿼리를 쿼리에서 가져오고 싶습니다. 그런 다음 어떻게 동일한 쿼리를 사용합니까? SELECT vtiger_surveycf. *, vtiger_survey.name 'FROM vtiger_surveycf INNER JOIN vtiger_surveycf.surveyid = vtiger_survey.surveyid WHERE vtiger_surveycf.surveyid LIMIT 100; – Muzafar

+0

쿼리는 현재 단일 개체로 제한되어 있으므로 조인은 지원되지 않습니다. –

+0

어쩌면이 쿼리 SELECT * FROM 설문 조사 –