MYSQL TEMPORARY 를 이용한 다중 검색
컨텐츠 정보
- 25,051 조회
- 2 추천
- 목록
본문
MYSQL TEMPORARY 를 이용한 다중 검색
안녕하세요
TEMPORARY 테이블을 이용한 다중 검색에 대해서 적어 볼까 합니다
다른 디비에는 UNION 이라는 것이 있어서 다중검색이 된다더군요
(UNION 이 머래요? 0_0;;;)
전 MYSQL 밖에 몰라서 이걸루 해볼라구 설쳐서 .. 성공 했습니다
먼저 MYSQL 3.23.29a 의 환경에서 실행하였습니다
아래는 소스 입니다
의문 나는 사항이 있으시면 제 홈쥐에 글 남겨 주시거나 메일 주십시요
꾸벅
// TEMPORARY TABLE MAKE
$tmp_make=mysql_query("create temporary table tmp (
sid int NOT NULL DEFAULT '0' auto_increment,
board varchar(20) NOT NULL,
bid int(11) NOT NULL,
subject varchar(255) NOT NULL,
content text,
signdate int(10) NOT NULL,
PRIMARY KEY(sid)
)");
// 게시판 환경 설정 테이블에서 각 게시판 BOARD 가져오기
$total_result =mysql_query("select board from board_config where limit_user_level < $admin_level");
$board_total = mysql_num_rows($total_result);
// BOARD 별로 게시판 돌면서 검색한다
for($i=0;$i<$board_total;$i++) {
mysql_data_seek($total_result,$i);
$board = mysql_fetch_array($total_result);
$search=mysql_query("select bid,subject,content,signdate from $board[board] where name like '%$key%' or subject like '%$key%' or content like '%$key%'");
$search_total=mysql_num_rows($search);
// 검색 결과를 TEMPORARY 테이블에 집어 넣는다
for($j=0;$j<$search_total;$j++) {
mysql_data_seek($search,$j);
$row = mysql_fetch_array($search);
$insert=mysql_query("insert into tmp
(board,bid,subject,content,signdate)
values
('$board[board]','$row[bid]','$row[subject]','$row[content]','$row[subject]')
");
}
}
// TEMPORARY 테이블 정보 가져오기
$result=mysql_query("select * from tmp order by signdate");
$total=mysql_num_rows($result);
echo "
<center>
<table border='0' cellpadding='2' cellspacing='2' width='90%'>
<tr>
<td colspan='10' align='right'>
검 색 어 <font color='red'><b>$key</b></font> 로 <font color='red'><b>$total</b></font> 개의 게시물이 검색 되었습니다
</td>
</tr>
";
// 보여주기
for($k=0;$k<$total;$k++) {
mysql_data_seek($result,$k);
$board=mysql_fetch_array($result);
$board[subject]=stripslashes($board[subject]);
$board[content]=stripslashes($board[content]);
$board[content]= htmlspecialchars($board[content]);
$board[signdate]=date("Y/m/d",$board[signdate]);
$board[content] = shortenStr($board[content],200,"<br>more.....");
$board[subject] = shortenStr($board[subject],60,".....");
$board[subject] = eregi_replace("($key)","<font color='red'>\\1</font>",$board[subject]);
$board[content] = eregi_replace("($key)","<font color='red'>\\1</font>",$board[content]);
echo "
<tr bgcolor='#006699'>
<td height='25'>
<font color='white'><b>$board[subject]</b> ------- $board[signdate]</font>
</td>
</tr>
<tr>
<td height='40'>
<a href='./cyboard/board.php3?board=$board[board]&bid=$board[bid]&mode=reade&key=$key'>$board[content]</a>
</td>
</tr>
";
}
$drop=mysql_query("drop table tmp");
안녕하세요
TEMPORARY 테이블을 이용한 다중 검색에 대해서 적어 볼까 합니다
다른 디비에는 UNION 이라는 것이 있어서 다중검색이 된다더군요
(UNION 이 머래요? 0_0;;;)
전 MYSQL 밖에 몰라서 이걸루 해볼라구 설쳐서 .. 성공 했습니다
먼저 MYSQL 3.23.29a 의 환경에서 실행하였습니다
아래는 소스 입니다
의문 나는 사항이 있으시면 제 홈쥐에 글 남겨 주시거나 메일 주십시요
꾸벅
// TEMPORARY TABLE MAKE
$tmp_make=mysql_query("create temporary table tmp (
sid int NOT NULL DEFAULT '0' auto_increment,
board varchar(20) NOT NULL,
bid int(11) NOT NULL,
subject varchar(255) NOT NULL,
content text,
signdate int(10) NOT NULL,
PRIMARY KEY(sid)
)");
// 게시판 환경 설정 테이블에서 각 게시판 BOARD 가져오기
$total_result =mysql_query("select board from board_config where limit_user_level < $admin_level");
$board_total = mysql_num_rows($total_result);
// BOARD 별로 게시판 돌면서 검색한다
for($i=0;$i<$board_total;$i++) {
mysql_data_seek($total_result,$i);
$board = mysql_fetch_array($total_result);
$search=mysql_query("select bid,subject,content,signdate from $board[board] where name like '%$key%' or subject like '%$key%' or content like '%$key%'");
$search_total=mysql_num_rows($search);
// 검색 결과를 TEMPORARY 테이블에 집어 넣는다
for($j=0;$j<$search_total;$j++) {
mysql_data_seek($search,$j);
$row = mysql_fetch_array($search);
$insert=mysql_query("insert into tmp
(board,bid,subject,content,signdate)
values
('$board[board]','$row[bid]','$row[subject]','$row[content]','$row[subject]')
");
}
}
// TEMPORARY 테이블 정보 가져오기
$result=mysql_query("select * from tmp order by signdate");
$total=mysql_num_rows($result);
echo "
<center>
<table border='0' cellpadding='2' cellspacing='2' width='90%'>
<tr>
<td colspan='10' align='right'>
검 색 어 <font color='red'><b>$key</b></font> 로 <font color='red'><b>$total</b></font> 개의 게시물이 검색 되었습니다
</td>
</tr>
";
// 보여주기
for($k=0;$k<$total;$k++) {
mysql_data_seek($result,$k);
$board=mysql_fetch_array($result);
$board[subject]=stripslashes($board[subject]);
$board[content]=stripslashes($board[content]);
$board[content]= htmlspecialchars($board[content]);
$board[signdate]=date("Y/m/d",$board[signdate]);
$board[content] = shortenStr($board[content],200,"<br>more.....");
$board[subject] = shortenStr($board[subject],60,".....");
$board[subject] = eregi_replace("($key)","<font color='red'>\\1</font>",$board[subject]);
$board[content] = eregi_replace("($key)","<font color='red'>\\1</font>",$board[content]);
echo "
<tr bgcolor='#006699'>
<td height='25'>
<font color='white'><b>$board[subject]</b> ------- $board[signdate]</font>
</td>
</tr>
<tr>
<td height='40'>
<a href='./cyboard/board.php3?board=$board[board]&bid=$board[bid]&mode=reade&key=$key'>$board[content]</a>
</td>
</tr>
";
}
$drop=mysql_query("drop table tmp");
관련자료
댓글 0
등록된 댓글이 없습니다.