当前位置: 首页 > 面试题库 >

数组内的SQL LIKE%

卢普松
2023-03-14
问题内容

我知道如何对单个值执行SQL LIKE%查询,如下所示:

SELECT * FROM users WHERE name LIKE %tom%;

但是,如果LIKE的搜索字词来自数组,该怎么办?例如,假设我们有一个像这样的数组:

$words = array("Tom", "Smith", "Larry");

如何执行我的SQL LIKE%来搜索数组中的单词,例如:

SELECT * FROM users WHERE name LIKE %[each_element_from_my_array]%

无需将整个查询放在foreach循环之内

编辑 :我忘了提到我在cakePHP find(’all’)方法的条件下在cakePHP中执行此操作,因此使事情变得有些复杂。

谢谢


问题答案:
$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);

编辑:CakePHP的代码:

foreach($words as $word){
    $sql[] = array('Model.name LIKE' => '%'.$word.'%');
}

$this->Model->find('all', array(
    'conditions' => array(
        'OR' => $sql
    )
));

阅读以下内容:http : //book.cakephp.org/1.3/en/view/1030/Complex-Find-
Conditions



 类似资料:
  • 问题内容: 我正在尝试使用for循环在数组内创建一个数组-这是我的代码: 不幸的是,这给了我一个 “解析错误:语法错误,意外的T_CONSTANT_ENCAPSED_STRING,预期为’)’” 对于该行: 对于出了什么问题,我有些茫然-非常感谢您的帮助。$ clients是在其他地方定义的,所以这不是问题。 问题答案: 那是无效的语法。您必须首先构建数组的“父”部分。然后使用foreach循环添

  • 我使用的是MongoDB 3.2。 在这个问题上遇到问题。。。 (为类似SQL的语法提前道歉,我只是从SQL学习Mongo) 我需要找到文件的数量 按类别分组 订购人 有没有办法将查询中的字符串转换为日期?我知道我在存储shop2。当日期应为ISODate时,将其作为字符串。如果不是,我们就假设它是一个ISODate。 下面是一个文档示例: 任何帮助都将不胜感激。谢谢 我已经更新了所有的shop1

  • 如何计算数组中数字的平均值? 看看我是如何获取数据的; 我想知道每个阵列的平均值,所以: 我在React工作。我从React Redux中的选择器获取数据。我用它来计算每个用户的平均评论。 代码:

  • 本文向大家介绍PowerShell查找数组内容、搜索数组、查询数组的方法,包括了PowerShell查找数组内容、搜索数组、查询数组的方法的使用技巧和注意事项,需要的朋友参考一下 PowerShell中有-contain、-like、-in等操作符,使用这些操作符,可以很方便的在数组中查找元素内容。其中in操作符貌似要在PowerShell 3.0中才有。 先看一个例子,将Windows目录的所有

  • 问题内容: 如何在PHP中合并n个数组 我的意思是我怎么可以这样做的工作: OR 里面有多个数组的数组在哪里,像这样: 我的结果是: 我需要的是 问题答案: array_merge可以接受可变数量的参数,因此,使用一些call_user_func_array技巧,您可以将数组传递给它: 基本上可以像输入以下内容一样运行: 更新: 现在有了5.6,我们有了运算符来将数组解压缩为参数,因此您可以: 并