问题:如何使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像'%bar%'和COLUMN_NAME像'%hello $'和COLUMN_NAME像'%world $'和COLUMN_NAME像'%foo $'

09-26 23:59