Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 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";
}
}