问题:如何使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 $'