2012-06-18 2 views
0

Я пишу код в php, чтобы в основном «отображать» данные из базы данных mySQL в другую базу данных. Я использую код следующим образом:query function in cake php

$results = $this->query("select PT_FS_DATA_ID from PATIENT_FLOWSHEET_DATA where 
    DT_LAST_UPDATED_TIME = (select top 1 DT_LAST_UPDATED_TIME from PATIENT_FLOWSHEET_DATA 
    order by DT_LAST_UPDATED TIME desc) group by PT_FS_DATA_ID;"); 

однако, я получаю сообщение об ошибке:

syntax error, unexpected T_VARIABLE, expecting T_FUNCTION 

Везде я смотрю это, кажется, правильный синтаксис. Здесь что-то не хватает? Я попытался поставить контроллер там $this->controllerName->query, но это тоже не сработало.

Полный код:

class CaExtraFlowsheetFields extends CaBase { 
public $name = 'CaExtraFlowsheetFields'; 

/* 
NOTE: This is to take all the fields in flowsheet and 
maps their id's. 
*/ 
//public $useTable = 'ANSWER_ENTRY'; 
public $useTable = 'PATIENT_FLOWSHEET_DATA'; 
public $primaryKey = 'PT_FS_DATA_ID'; 

protected function getPrimaryKeyValue(
    $hospital_id, 
    $patient_id, 
    $admission_id = null 
) { 

return $patient_id; 
} 

//*CHANGE BEGIN* 
$results = $this->query("select PT_FS_DATA_ID from PATIENT_FLOWSHEET_DATA where 
DT_LAST_UPDATED_TIME = (select top 1 DT_LAST_UPDATED_TIME from PATIENT_FLOWSHEET_DATA 
order by DT_LAST_UPDATED TIME desc) group by PT_FS_DATA_ID;"); 

protected $filedMethodMappings = array(

    'Method_GO' => array(
     CaBase::KEY_MAPPING_LOGIC_COMPLEXITY => CaBase::LEVEL2_COMPLEXITY, 
     CaBase::KEY_FIELD_LOGIC_NAME   => 'wsMethod_GO', 
); 

//########################################################################// 
//Note[]>Block[]    // 
//>Method that calls LookUpField for every field in flowsheet //          // 
//########################################################################// 
public function wsMethod_GO ($params) { 
    foreach($results as $value){ 

     $questionName = ''.$value; 
     $msg_prefix = $this->name . "::" . __FUNCTION__ . ": ". "arrivez-vouz" ; 
     $ret = $this->wsLookUpField($params,$questionName,$msg_prefix); 
     return $ret; 
    } 
    unset($value); 
} 
//########################################################################// 

public function wsLookUpField($params,$questionName,$msg_prefix){ 

$arrayValues=array(); 
    try{  
     $hospital_id = $params[Constants::KEY_HOSPITAL_ID]; 
     $patient_id = $params[Constants::KEY_PATIENT_ID]; 
     $admission_id = $params[Constants::KEY_ADMISSION_ID]; 

     $msg_prefix = $this->name . "::" . __FUNCTION__ . ": ". "attendez-vouz: l'hopital= ".$hospital_id. 
     " patient= ".$patient_id." admission= ".$admission_id; 

     //shows info about given question name 
     $msg_prefix = "*!*!*!*Show me ---> ".$questionName." : ".$answer_entry_id. 
     " = aic: " .$answer_id_check; 

     $ret = array(); 

     //now with needed fields, grab the A_NAME: 
      $params = array(
      'conditions' => array(
       $this->name . '.PID'    => $patient_id, 
       $this->name . '.PT_FS_DATA_ID'  => $questionName,   
      ), 
      'order' => array(
       $this->name . '.' . $this->primaryKey . ' DESC' 
      ), 
      'fields' => array(
       $this->name . '.FS_VALUE_TEXT', 
      ) 
     ); 

    $rs = $this->find('first', $params); 

    /* check to make sure $rs has received an answer from the query 
     and check to make sure this answer is a part of the most recent 
     database entries for this note */ 
    if (false != $rs) { 
      try {     
       $msg = $msg_prefix . "Data obtained successfully."."<br>".$result; 
      $result = $rs; 
      $ret = WsResponse::getResponse_Success($msg, $result); 
     } catch (Exception $e) { 
      $msg = $msg_prefix . "Exception occurred."; 
      $ret = WsResponse::getResponse_Error($msg); 
     } 
    /*answer was not part of most recent database entries, meaning no 
     answer was given for this particular question the last time this 
     particular note was filled out. Message is given accordingly.*/ 
    } else { 
     $msg = $msg_prefix . "/No answer given."; 
      $ret = WsResponse::getResponse_Error($msg); 
     } 


    } catch (Exception $e) { 
       $msg = $msg_prefix . "Exception occurred."; 
       $ret = WsResponse::getResponse_Error($msg); 
     }   
return $ret; 
} 
+0

ли вы на модели при выполнении запроса? Кроме того, посмотрите номер строки, на которую ссылается ошибка. – jeremyharris

+0

Номер строки - это $ results = $ this-> query ("выберите PT_FS_DATA_ID из PATIENT_FLOWSHEET_DATA, где и да, я в модели, когда я выполняю запрос – nathpilland

+0

Можете ли вы показать больше кода? Это действительно правильный код, поэтому я чувствую, что мы теряем что-то из другого места. – jeremyharris

ответ

2

Вот что вы делаете:

class ABC { 

    $result = 'whatever'; 

} 

Вы не можете объявить переменную там!


код должен быть внутри метода/функции ...

class ABC 
{ 
    public function wsMethod_GO ($params) 
    { 
     $result = 'whatever'; 
    } 
} 
+0

Не могли бы вы объяснить немного больше? Я не уверен, что вы имеете в виду. – nathpilland

+0

О, я даже не думал об этом. Я застрял на этом e последние несколько дней. Благодаря!! Но теперь я получаю неожиданный T_PUBLIC. Нужно ли мне объявлять что-то частное, чтобы это работало? – nathpilland