Search code examples
mysqldrupal-7

mysql query to drupal query


Please can anyone convert this query into drupal db_select

    $query="SELECT DISTINCT 'supplier_id','supplier_name','supplier_address','supplier_city', 'supplier_pincode', 'supplier_state', 'supplier_country' FROM pmai_supplier_directory WHERE ";
foreach($list as $k=>$value)
{
    $query.=" supplier_interest LIKE '%".$value."%' OR";
}
$query=substr($query,0,strlen($query)-2);
echo $query.=" ORDER BY supplier_name"; 

Thank you


Solution

  • So the query is :

    SELECT DISTINCT 'supplier_id','supplier_name','supplier_address','supplier_city',
       'supplier_pincode', 'supplier_state', 'supplier_country' 
    FROM pmai_supplier_directory 
    WHERE supplier_interest LIKE '%foo%' 
       OR supplier_interest LIKE '%bar%'
       OR supplier_interest LIKE '%baz%'
    ORDER BY supplier_name"; 
    

    This could be done that way:

    $list = array('foo','bar','baz');
    $query = db_select('pmai_supplier_directory','pmsp')
    
      ->fields('pmsp',array(
        'supplier_id',
        'supplier_name',
        'supplier_address',
        'supplier_city',
        'supplier_pincode',
        'supplier_state',
        'supplier_country'
      ))
      ->orderBy('supplier_name')
      ->distinct();
    
      $orCond = db_or();$elt = 0;
      foreach($list as $k => $value) {
        $orCond->condition('pmsp.supplier_interest','%'.$value.'%','LIKE');
        $elt++;
      }
      if ($elt) {
        $query->condition($orCond);
      }
    

    Then you just have to execute and fetch results.