mysql — многозначная фильтрация SQL / PHP (AND LIKE ‘array [1]’ AND LIKE ‘array [2]’)

Вопрос: Как сделать так, чтобы SQL автоматически настраивался на длину массива и делал оператор «И НРАВИТСЯ» для каждого значения массива?

В основном я пытаюсь сделать следующее динамическое: (я использую MySQL 5.6.17)

поэтому код будет

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

Приведенный выше код будет работать нормально, я пропустил ненужные биты. Единственная проблема в том, что я не знаю, сколько у меня будет элементов массива, поэтому я не могу просто создать загрузку AND AO LIKE для всего … Кроме того, я не знаю, какими они будут, поскольку они определены пользователем. Я не знаю, как многим в этой динамике просто сделать ‘AND AO LIKE’ для каждого элемента в $ descr. Пожалуйста помоги.

Если это не очевидно,

АО это колонка
$ descr — это массив пользовательских ключевых слов различной длины.

0

Решение

Я предполагаю, что ваш $ 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);

Результат: ВЫБЕРИТЕ * ИЗ TABLE_NAME, ГДЕ COLUMN_NAME НРАВИТСЯ «% bar%» И COLUMN_NAME НРАВИТСЯ «% hello $», И COLUMN_NAME НРАВИТСЯ «% world $», И COLUMN_NAME НРАВИТСЯ «% foo $»

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]