2015-12-23 4 views
2
public function getAllSharedCases($uid) { 
     $sql = "SELECT * FROM cases 
       INNER JOIN share_pathologist AS sp ON cases.case_id = sp.case_id 
       INNER JOIN share_group AS sg ON cases.case_id = sg.case_id 
       WHERE sp.pathologist_id = ? OR sg.group_id = (SELECT group_id FROM user_group WHERE state = ? AND user_id = ?)"; 
     $query = $this->db->prepare($sql); 
     $query->execute(array($uid, "joined", $uid)); 
     if($query->rowCount()) { 
      $cases = $query->fetchAll(); 
      for ($i = 0; $i < count($cases); $i++) { 
       $shared = $this->getSharedWithGroups($cases[$i]["case_id"]); 
       $cases[$i]["shared_group"] = $shared; 
       $shared = $this->getSharedWithPathologists($cases[$i]["case_id"]); 
       $cases[$i]["shared_pathologist"] = $shared; 
      } 
      return $cases; 
     } 
     return false; 
    } 

share_pathologist:MySQL ERROR запрос 12

id 
case_id 
pathologist_id 

share_group:

id 
case_id 
group_id 

user_group:

id 
user_id 
group_id 
state 

Этот запрос возвращает ложь всегда.

+0

Что ваш вопрос? –

+0

где ошибка в запросе? моя текущая база данных имеет uid в share_pathologist и share_group. Но он возвращает false. –

+0

Выполняется ли этот запрос, если вы вставляете его в phpMyAdmin или что-то похожее – RiggsFolly

ответ

2

Использование В оператор вместо СОСТАВЛЯЕТ ('=') перед тем суб запроса.

Попробуйте это:

public function getAllSharedCases($uid) { 
     $sql = "SELECT * FROM cases 
       INNER JOIN share_pathologist AS sp ON cases.case_id = sp.case_id 
       INNER JOIN share_group AS sg ON cases.case_id = sg.case_id 
       WHERE sp.pathologist_id = ? OR sg.group_id IN (SELECT group_id FROM user_group WHERE state = ? AND user_id = ?)"; 
     $query = $this->db->prepare($sql); 
     $query->execute(array($uid, "joined", $uid)); 
     if($query->rowCount()) { 
      $cases = $query->fetchAll(); 
      for ($i = 0; $i < count($cases); $i++) { 
       $shared = $this->getSharedWithGroups($cases[$i]["case_id"]); 
       $cases[$i]["shared_group"] = $shared; 
       $shared = $this->getSharedWithPathologists($cases[$i]["case_id"]); 
       $cases[$i]["shared_pathologist"] = $shared; 
      } 
      return $cases; 
     } 
     return false; 
    }