1

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

1 Answer 1

4

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.

Sign up to request clarification or add additional context in comments.

1 Comment

isn't DISTINCT missing?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.