SQL LIKE % inside array
In case of standard SQL, it would be:
SELECT * FROM users WHERE name LIKE '%tom%'
OR name LIKE '%smith%'
OR name LIKE '%larry%';
Since you're using MySQL you can use RLIKE
(a.k.a. REGEXP
)
SELECT * FROM users WHERE name RLIKE 'tom|smith|larry';
You can't. It'll have to be a chained field like %..% or field like %..% or ...
. A where ... in
clause only does extract string matches, with no support for wildcards.
$sql = array('0'); // Stop errors when $words is empty
foreach($words as $word){
$sql[] = 'name LIKE %'.$word.'%'
}
$sql = 'SELECT * FROM users WHERE '.implode(" OR ", $sql);
Edit: code for CakePHP:
foreach($words as $word){
$sql[] = array('Model.name LIKE' => '%'.$word.'%');
}
$this->Model->find('all', array(
'conditions' => array(
'OR' => $sql
)
));
Read up on this stuff: http://book.cakephp.org/1.3/en/view/1030/Complex-Find-Conditions