반응형
PHP mysql 키워드를 사용하여 여러 테이블 검색
제 데이터베이스에는 다음과 같은 세 개의 테이블은 다음과 같습니다.
messages
topics
comments
이 표들에는 각각 '내용'과 '제목'이라는 두 개의 필드가 있습니다.sql 문에서 '좋아요'를 사용하여 키워드를 사용하여 'messages.content', 'messages.title', 'topics.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}
카테고리 및 게시물은 데이터베이스의 표입니다.
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";
}
데이터베이스를 포함합니다.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();
언급URL : https://stackoverflow.com/questions/6574564/php-mysql-search-multiple-tables-using-a-keyword
반응형
'programing' 카테고리의 다른 글
MySQL float 값에 액세스 (0) | 2023.09.27 |
---|---|
Angularjs는 컨트롤러를 문자열로 사용하여 확인합니다. (0) | 2023.09.27 |
태그에 type="text/text"가 필요합니까? (0) | 2023.09.17 |
스파크 SQL에서 JDBC 테이블을 로드하는 동안 잘못된 데이터 (0) | 2023.09.17 |
curl 명령을 JavaScript로 변환 (0) | 2023.09.17 |