SQL/PHP 多值过滤(AND LIKE 'array[1]' AND LIKE 'array[2]')

SQL/PHP Multi-value Filtering (AND LIKE 'array[1]' AND LIKE 'array[2]')

问题:如何让SQL自动调整数组长度并为数组的每个值做一个"AND LIKE ''"语句?

基本上我正在尝试使以下动态:(我正在使用 mySQL 5.6.17)

所以代码是

SELECT ... WHERE  .. AND AO LIKE '%$descr[0]%' AND AO LIKE '%$descr[1]%' AND AO LIKE '%$descr[2]%'

上面的代码可以正常工作,我漏掉了不相关的部分。唯一的问题是,我不知道我会有多少数组元素,所以我不能只创建一个负载AND AO LIKE 一切......另外,我不知道它们是什么,因为它们是用户定义的。我不知道有多少这种动态才能为 $descr 中的每个元素创建一个“AND AO LIKE”。请帮忙。

如果不是很明显,

AO 是列 $descr 是用户定义的不同长度关键字的数组。

我猜你的 $descr 会以数组的形式出现 - 下面的内容对你有帮助吗?

$descr = array(
    'hello',
    'world',
    'foo',
    'bar'
);

$sql[] = 'SELECT * FROM TABLE_NAME';

if(is_array($descr) and count($descr) > 0) {
    $sql[] = 'WHERE COLUMN_NAME LIKE \'%' . array_pop($descr) . '%\'';

    foreach($descr as $des) {
        $sql[] = 'AND COLUMN_NAME LIKE \'%' . $des . '$\'';
    }
}
echo implode(' ', $sql); 

结果: SELECT * FROM TABLE_NAME WHERE COLUMN_NAME LIKE '%bar%' AND COLUMN_NAME LIKE '%你好$' AND COLUMN_NAME LIKE '%world$' AND COLUMN_NAME LIKE '%foo$'