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 ."%'"); 

Мне также интересно, как только я получу результаты из нескольких таблиц, как я могу узнать, какой результат из какой таблицы?

Любая помощь будет принята с благодарностью!

 $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 .

Что вы, вероятно, ищете, это команда 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%' 

Два поиска в других таблицах, которые вы используете:

 SELECT `categories`.`title`, `posts`.`title` WHERE `categories`.`title` LIKE {$a} OR `posts`.`title` LIKE {$a} 

КАТЕГОРИИ и POSTS – это таблицы вашей базы данных.

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(); 
  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"; } }