sql쿼리관련

sql쿼리관련

QA

sql쿼리관련

본문

게시판에서 내가 작성한 글들을 불러오려고 쿼리를 찾다가 union을 사용했습니다.

게시판정보 테이블에서 게시판 이름을 가져와서 for문 돌려서 게시판에 있는

게시글 숫자를 다 합치는 쿼리를 만들었습니다.

 

 

select sum(all_count.cnt) AS all_counts

from (

SELECT count(*) cnt from `g5_write_email` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_notice` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_bodo` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_review` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_snsphoto` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_snsvideo` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_report` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_magazine` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_tv` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_bfood` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_page` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_food` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_event` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_inquiry` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_pubandpop` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_wbodo` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_foodstory` where mb_id = 'ri1205'

union all SELECT count(*) cnt from `g5_write_companypoto` where mb_id = 'ri1205'

) all_count

 

위 쿼리를 만들어서 바로 sql에 실행을 하면

all_counts
1786

위처럼 결과가 나옵니다.

 

근데 php페이지에서

$all_row = sql_fetch($all_query);

$total_count = $row['all_counts'];

echo $all_query;해서 값을 확인하면 값이 안나오고 있어요...

혹시나해서 print_r($all_row)배열로 확인하면 Array ( [1] => 1 ) 라고만 나와요;;;

어디가 문젠지 모르겠어요;;쿼리는 실행이 되서요 ㅠㅠ

이 질문에 댓글 쓰기 :

답변 4

sql_query  함수는 union을 사용하지 못하게 막아놨습니다. mysql_query를 사용해보세요 

sql_fetch 도 union을 사용하지 못하게 preg_replace 로  함수에서 막혀있습니다. 

$all_row = mysql_fetch_array(mysql_query($all_query));
$all_row[all_counts]이렇게 확인해도 값이 나오질...않아요;;;


-------------------------------------------------------------------------------------
디비구문 추가해주고 mysql_fetch_array랑 mysql_query사용하니 값이 나왔습니다ㅎ 감사합니다
$con = mysql_connect("localhost","***","****");
mysql_select_db("*****", $con);

$total_count = $all_row['all_counts'];

쿼리 호출후 변수명이 잘못 되어 있는걸로 확인 됩니다.

 

그리고 쿼리 생성이 제대로 안되고 있는듯 한데 확인이 안되서 정확히 뭐라 말씀드리기는 어렵네요

아;; echo "<span style='font-size:12px;'>=".$all_row[all_counts]."=</span>";이걸로  값확인하고있었어요 쿼리는....저위에 적힌게 쿼리생성이 다된거에요.....쿼리는 제대로 생성된거 아닌가요??sql에 직접돌리면 값이..나와서요;;

내가 작성한 글은, /bbs/new.php?mb_id=[ID]

( /bbs/new.php?mb_id=ri1205 ) 로 확인 가능합니다.

 

새 글 (new.php) 페이지를 활용하는 것을 추천합니다.

몇가지 참고할 만한 사항들 남깁니다.

* g5_board_new 테이블에는 최신글만 들어가는 단점이 있습니다.

저도 해본적은 없지만, 관리자 > 기본 설정 > 최근 게시물 삭제일을 30일에서 9999일등으로 변경하는 방법을 생각해 볼 수 있습니다.  g5_board_new 테이블에서만  count 가능?

 

https://sir.kr/bbs/board.php?bo_table=g5_tip&wr_id=2753

같은 그룹에서 전체 작성글 갯수 뽑기 함수 관련 글입니다.

제가 잠깐 테스트했을 때는 오류가 나오기는 했는데, 그래도 한번 살펴볼 수 있지 않을까 하여 말씀드립니다.

 

* common.lib.php 파일에서 sql_query() 시 (sql_fetch()  도 sql_query() 과정 포함)

  union 차단 부분을 임시적으로 해제하여 테스트 해볼 수 있지 않을까 합니다.

 

(관련부분) $sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);

 

해결이 맞는지는 모르겠으나 해결했습니다 ㅋㅋㅋㅋ
mysql_fetch_array랑 mysql_query가 실행되지않아서 혹시나하고 디비연결 구문을 그 페이지에 추가했더니 되더라고요 ㅠㅠ
$con = mysql_connect("localhost","***","****");
mysql_select_db("*****", $con);

답변을 작성하시기 전에 로그인 해주세요.
전체 0 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT