当我使用concat时,Mysql查询无效

I don't understand why following query is not return anything. If I change the query then it's return result.

what I'm doing now (No output)

$msg =  array();
$getSearch = "SELECT contact_details . * , company.company_name, users.nickname FROM contact_details LEFT JOIN users ON users.user_id = contact_details.user_id LEFT JOIN company ON company.cid = contact_details.cid WHERE";  

if(!empty($ad_company)){
    $getSearch .= "company.company_name LIKE '$ad_company%' ";
}     

$getSearch =  mysql_query($getSearch);  
while($searchResult =  mysql_fetch_array($getSearch)){
$msg[] = $company = $searchResult['company_name'] . "<br/>";
}
echo  json_encode($msg);        

Change Code(Working)

$msg =  array();
$getSearch = "SELECT contact_details . * , company.company_name, users.nickname FROM contact_details LEFT JOIN users ON users.user_id = contact_details.user_id LEFT JOIN company ON company.cid = contact_details.cid WHERE company.company_name LIKE '$ad_company%'"; 

//$msg[] = empty($ad_company) ? "empty company" : "not empty company"; //for checking and field has value

/*if(!empty($ad_company)){
    $getSearch .= "company.company_name LIKE '$ad_company%' ";
}*/         

$getSearch =  mysql_query($getSearch);

while($searchResult =  mysql_fetch_array($getSearch)){
$msg[] = $company = $searchResult['company_name'] . "<br/>";
}
echo  json_encode($msg);        

Try this

As answer by Mitja , you have missed the space between WHERE and company

$getSearch = "SELECT contact_details . * , company.company_name, users.nickname 
              FROM contact_details 
              LEFT JOIN users ON users.user_id = contact_details.user_id 
              LEFT JOIN company ON company.cid = contact_details.cid ";  

if(!empty($ad_company)){
    $getSearch .= " WHERE company.company_name LIKE '$ad_company%' ";
}  

EDITED

$getSearch = "SELECT contact_details . * , company.company_name, users.nickname 
              FROM contact_details 
              LEFT JOIN users ON users.user_id = contact_details.user_id 
              LEFT JOIN company ON company.cid = contact_details.cid
              WHERE 1=1 ";  

if(!empty($ad_company)){
    $getSearch .= " AND company.company_name LIKE '$ad_company%' ";
}  

Maybe becouse you don't have a space between WHERE and company?

I have removed the WHERE from your $getSearch query and added to the one we are appending

 $getSearch = "SELECT contact_details . * , company.company_name, users.nickname FROM contact_details LEFT JOIN users ON users.user_id = contact_details.user_id LEFT JOIN company ON company.cid = contact_details.cid";  

if(!empty($ad_company)){
    $getSearch .= " WHERE company.company_name LIKE '$ad_company%' ";
}

in future if you face problems like these always try to print only sql query before querying it with db.. this way you will get to see as if your query is correct or not