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