use*_*368 20 php mysql sql sql-like
我知道如何对单个值执行SQL LIKE%查询,如下所示:
SELECT * FROM users WHERE name LIKE %tom%;
Run Code Online (Sandbox Code Playgroud)
但如果我的LIKE的搜索条件来自数组,我该怎么做?例如,假设我们有一个这样的数组:
$words = array("Tom", "Smith", "Larry");
Run Code Online (Sandbox Code Playgroud)
如何执行我的SQL LIKE%来搜索我的数组中的单词,如:
SELECT * FROM users WHERE name LIKE %[each_element_from_my_array]%
Run Code Online (Sandbox Code Playgroud)
没有将整个查询放在foreach循环或其他内容中
编辑:我忘了提到我在cakePHP中使用cakePHP find('all')方法执行此操作,因此使事情变得复杂一点.
谢谢
472*_*084 28
$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);
Run Code Online (Sandbox Code Playgroud)
编辑:CakePHP的代码:
foreach($words as $word){
$sql[] = array('Model.name LIKE' => '%'.$word.'%');
}
$this->Model->find('all', array(
'conditions' => array(
'OR' => $sql
)
));
Run Code Online (Sandbox Code Playgroud)
阅读这些内容:http://book.cakephp.org/1.3/en/view/1030/Complex-Find-Conditions
var*_*tec 16
在标准SQL的情况下,它将是:
SELECT * FROM users WHERE name LIKE '%tom%'
OR name LIKE '%smith%'
OR name LIKE '%larry%';
Run Code Online (Sandbox Code Playgroud)
既然你使用MySQL就可以使用RLIKE(又名REGEXP)
SELECT * FROM users WHERE name RLIKE 'tom|smith|larry';
Run Code Online (Sandbox Code Playgroud)