2014-01-22 3 views
-1

Я пытаюсь создать систему поискового блога, где блоги отображаются на основе предложений пользователей. Предложения являются основными хэштегами, которые хранятся в таблице user_information. В то время как блоги также будут иметь некоторые хэштеги, вводимые блогером, который будет храниться в таблице blog.Поиск текста с использованием Mysql

Теперь, когда я должен соответствовать хэштегам от user_information таблице до стола blog, я не нахожу способ сделать это.

Я пробовал mysql LIKE CLAUSE, но я не могу получить хотя бы один результат.

Мой запрос был [только представление]

SELECT * FROM блог WHERE Хештеги как $ hashtags_from_user

+0

Как вы храните данные в 'blog', в частности в столбце' hashtags'? – BenM

+0

Как '# hashtag1 , # hashtag2, # hashtag3, .... ' – user3222855

+0

Итак, как список CSV? – BenM

ответ

1

Вы не правильно спасаясь значения, вам требуется хэш-теги, которые будут заключены в кавычки

"LIKE '". $hashtags_from_user ."'"; 

Кроме того, вы будете платить цену в SELECT заявлении, когда вы Денормализованные базы данных (хэш-тэги должны иметь свои собственные строки в таблице hash_tags и blog бы ссылается на них через многие-ко-многим или многие-к-одному ассоциации)

в настоящее время выход запроса:

SELECT * FROM blog WHERE hashtags LIKE '#hashtag1,#hashtag2,#hashtag' 

Это не даст вам желаемых результатов, если вам нужно совпадение с отдельными тегами.

только soultion будет читать пользователей имеет строку тега, разбить его на каждый тег (используя $tags = explode(',', $hash_tags_from_user);, а затем создать запрос, чтобы включить все из них

$where = array(); 
$select = 'SELECT * FROM foo'; 
foreach($tags as $tag) { 
    $where[] = sprintf('tag LIKE \'%s\'', $tag); 
} 
if (! empty($where)) $select .= 'WHERE ' . implode(' OR ', $where); 

Пожалуйста, не используйте выше, так как это просто и пример (и открыт для простой SQL-инъекции), рассмотрим использование подготовленных операторов с PDO/MySQLi.

0

Попробуйте это:

$sql = 'SELECT * FROM blog WHERE hashtags LIKE "'.$hashtags_from_user.'";'; 

Вы должны поместить строку вы находясь между ' или ", вы можете делать это только с номерами.

Смежные вопросы