Используемый вами запрос не будет работать - вы используете функции PHP для сравнения с простой строкой и добавляете результат этого сравнения в свой запрос. Все, что увидит БД, это:
SELECT * FROM nouns WHERE Active AND (-1 OR 0)
... потому что функция php strpos
возвращает числовую позицию найденной строки (или -1, если не найден. Вам нужно использовать функции сравнения в самой базе данных, поэтому вы не после функций php в все, скорее вы хотите функции сравнения MySQL.
Для справки, вот их список: http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html
Вот пример, который очень просто ищет совпадения. Вы можете немного улучшить этот код, но это должно дать вам представление:
$lcSearchVal = "people places things";
$lcSearchVal = explode( ' ', $lcSearchVal );
$sql = 'SELECT * FROM nouns WHERE Active=1 AND (';
$parts = array();
foreach( $lcSearchVal as $lcSearchWord ){
$parts[] = '`description` LIKE "%'.$lcSearchWord.'%"';
$parts[] = '`title` LIKE "%'.$lcSearchWord.'%"';
}
$sql .= implode(' OR ', $parts).')';
print $sql;
Возиться с этим: http://codepad.org/fcNH5qyu
Также обратите внимание, что ваше предложение WHERE Active
недопустимо - вы должны сравнить его. В моем примере я предположил, что поле Active
является числовым 1 или 0.