Shibbir
Shibbir

Reputation: 257

Mysql query is not working when I'm using concate

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);        

Upvotes: 1

Views: 46

Answers (3)

Shafeeque
Shafeeque

Reputation: 2069

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%' ";
}  

Upvotes: 1

justrohu
justrohu

Reputation: 589

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

Upvotes: 0

Mitja
Mitja

Reputation: 43

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

Upvotes: 2

Related Questions