Ошибка в синтаксисе SQL

#php #mysql

#php #mysql

Вопрос:

Я получаю эту ошибку, не могу понять, что происходит не так, пожалуйста, помогите.

Произошла ошибка базы данных

Номер ошибки: 1064

У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с ‘)’ в строке 1

 SELECT GROUP_CONCAT(DISTINCT ud.userid) as id from pr_users_details ud INNER JOIN pr_users u ON ud.userid = u.id WHERE ud.status = '1' AND ()
  

Моя функция выглядит так:

 	function get_nomination_emailids($functions, $levels, $roles, $locations, $emails)
		{
			
			$SQL.="SELECT GROUP_CONCAT(DISTINCT ud.userid) as id from pr_users_details ud INNER JOIN pr_users u ON ud.userid = u.id  WHERE ud.status = '1' ";
			if(count($functions)>0)
			{
				$d = implode(",",$functions);
				$whereand[] = " u.departmentid IN (".$d.") ";
			}
			if(count($levels)>0)
			{
				$d1 = implode(",",$levels);
				$whereand[] = " ud.designation_id IN (".$d1.") ";
			}
			if(count($roles)>0)
			{
				$d2 = implode(",",$roles);
				$whereand[] = " u.userroleid IN (".$d2.") ";
			}
			if(count($locations)>0)
			{
				$d3 = implode(",",$locations);
				$whereand[] = " u.branchid IN (".$d3.") ";
			}
		
			if(count($emails)>0)
			{
				$d4 = implode(",",$emails);
				$whereor[] = " ud.userid IN (".$d4.") ";
			}
			$whr = array();
			
			if(isset($whereand))
			$whr[] = " (".implode(" AND ",$whereand).")  ";
		
			if(isset($whereor))
			$whr[] = " (".implode(" OR ",$whereor).")  ";
			
			
			if(count($whr > 0))
			{
				
				$SQL .= " AND (".implode(" OR ",$whr).") ";
			}
			
			$query = $this->db->query($SQL);
		
			$return	= 	$query->result_array();
			
			return $return[0]['id'];
			//print_r($return);die;
			
		}  

Комментарии:

1. AND () необходимо что-то содержать или удалять.

2. Btw count() возвращает 1 для каждого элемента, который не является массивом или NULL. Так что, если $emails или $locations являются ЛОЖНЫМИ , количество равно 1.

Ответ №1:

И () удалить в вашем запросе попробуйте это.

 SELECT GROUP_CONCAT(DISTINCT ud.userid) as id from pr_users_details ud INNER JOIN pr_users u ON ud.userid = u.id WHERE ud.status = '1'