dsieyx2015 2014-10-01 11:19
浏览 517
已采纳

当我使用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);        
  • 写回答

3条回答 默认 最新

  • ds3464 2014-10-01 11:26
    关注

    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%' ";
    }  
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)