PHP mysql ищет несколько таблиц с помощью ключевого слова
У меня есть три таблицы в моей базе данных:
messages
topics
comments
Каждая из этих таблиц имеет два поля: "content" и "title". Я хочу иметь возможность использовать "Like" в своем заявлении sql для просмотра "messages.content", "messages.title", "themes.content", "themes.title", "comments.content" и "comments". title ', используя ключевое слово.
Пока мой запрос может найти результаты только из одной таблицы:
mysql_query("SELECT * FROM messages
WHERE content LIKE '%" . $keyword . "%'
OR title LIKE '%" . $keyword ."%'");
Мне также интересно, как только я получу результаты из нескольких таблиц, как я могу узнать, какой результат из какой таблицы?
Любая помощь будет принята с благодарностью!
Ответы
Ответ 1
$query = "(SELECT content, title, 'msg' as type FROM messages WHERE content LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')
UNION
(SELECT content, title, 'topic' as type FROM topics WHERE content LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')
UNION
(SELECT content, title, 'comment' as type FROM comments WHERE content LIKE '%" .
$keyword . "%' OR title LIKE '%" . $keyword ."%')";
mysql_query($query);
Итак, вы получаете результат из всех трех таблиц, и вы можете определить, какая строка пришла из этой таблицы, посмотрев на ее значение type
.
Ответ 2
Что вы, вероятно, ищете, это команда UNION:
SELECT id, 'messages' as 'table' FROM messages
WHERE content LIKE '%keyword%'
OR title LIKE '%keyword%'
UNION
SELECT id, 'topics' as 'table' FROM topics
WHERE content LIKE '%keyword%'
OR title LIKE '%keyword%'
UNION
SELECT id, 'comments' as 'table' FROM comments
WHERE content LIKE '%keyword%'
OR title LIKE '%keyword%'
Ответ 3
Два поиска в других таблицах, которые вы используете:
SELECT `categories`.`title`, `posts`.`title` WHERE `categories`.`title` LIKE {$a} OR `posts`.`title` LIKE {$a}
КАТЕГОРИИ и POSTS являются таблицами вашей базы данных.
Ответ 4
Html Форма поиска:
<div class="header_top_right">
<form action="search.php" method="GET" class="search_form">
<input type="text" placeholder="Text to Search.." name="search">
<input type="submit" class="btn btn-default" value="">
</form>
</div>
search.php:
<?php
if (isset($_GET['search']) || !empty($_GET['search'])) {
$search = mysqli_real_escape_string($db->link, $fm->validation($_GET['search']));
}
else{
header("Location:404.php");
}
?>
<?php
$query = "SELECT * FROM news_post WHERE title LIKE '%$search%' OR body LIKE '%$search%' OR tags LIKE '%search%'";
$post = $db->select($query);
if ($post) {
while ($result = $post->fetch_assoc()) {
echo"Database data like, $result['title']";
}
}
else{
echo "result Not found";
}
включить database.php в search.php
class Database{
public function select($query){
$result = $this->link->query($query) or die($this->link->error.__LINE__);
if($result->num_rows > 0){
return $result;
}
else {
return false;
}
}
}
$db = new Database();
Ответ 5
class Database{
public function select($query){
$result = $this->link->query($query) or die($this->link->error.__LINE__);
if($result->num_rows > 0){
return $result;
} else {
return false;
}
}
}
$db = new Database();
$query = "SELECT * FROM post WHERE title LIKE '%$search%' OR body LIKE '%$search%'";
$post = $db->select($query);
if ($post) {
while ($result = $post->fetch_assoc()) {
echo"Database Table colum"
} else{
echo "Search result not Match";
}
}