테스트 사이트 - 개발 중인 베타 버전입니다

쿼리문 처리시 관련문의드립니다. 채택완료

피라미드 2년 전 조회 3,479

안녕하세요 질문하나 가지고왔습니다. ㅎ;

$conn = new mysqli(G5_MYSQL_HOST, G5_MYSQL_USER, G5_MYSQL_PASSWORD, G5_MYSQL_DB);

 

// 연결 확인

if ($conn->connect_error) {

    die("데이터베이스 연결 실패: " . $conn->connect_error);

}

 

$sql = "SELECT

            SUM(CASE WHEN g5_member.mb_sex = 'F' THEN 1 ELSE 0 END) AS 여댓글의수,

            SUM(CASE WHEN g5_member.mb_sex = 'M' THEN 1 ELSE 0 END) AS 남댓글의수,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) BETWEEN 10 AND 19 THEN 1 ELSE 0 END) AS age_10,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) BETWEEN 20 AND 29 THEN 1 ELSE 0 END) AS age_20,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) BETWEEN 30 AND 39 THEN 1 ELSE 0 END) AS age_30,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) BETWEEN 40 AND 49 THEN 1 ELSE 0 END) AS age_40,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) BETWEEN 50 AND 59 THEN 1 ELSE 0 END) AS age_50,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) BETWEEN 60 AND 69 THEN 1 ELSE 0 END) AS age_60,

            SUM(CASE WHEN TIMESTAMPDIFF(YEAR, STR_TO_DATE(g5_member.mb_birth, '%Y-%m-%d'), NOW()) >= 70 THEN 1 ELSE 0 END) AS age_70

        FROM g5_write_notice

        JOIN g5_member ON g5_write_notice.mb_id = g5_member.mb_id

        WHERE wr_is_comment = 1";

 

$result = $conn->query($sql);

네 소스에 문제는 없구요 궁금한게 있어서 질문드립니다.

저는 매번 이런식으로 서버측을 처리를 하고있는데 쿼리문 처리할때 꼭 위처럼 디비접속을 하지않고 처리 하는 법도 있는듯하여 올려봅니다. 혹시나 있으시면 조언좀 부탁드려요

 

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트
M
2년 전

스킨 파일이면 굳이 conn을 안 하시고 쿼리를 실행하셔도 되지 않나요?

$result = $conn->query($sql);

->

$result = sql_query($sql);

이렇게 하셔도 될꺼 같습니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

피라미드
2년 전
하하 그렇군요 정답이 여기 있어네요;; 너무 감사드립니다. 그럼 관리자 모드 에서도 똑같겠군요;;
난 지금까지 콘접속하고 리솔트 처리하고 이래것든요 ---;;;

댓글을 작성하려면 로그인이 필요합니다.

LeonSoftㅣCeo

스킨 파일에서 왼만하면 작업을 안하시는것이 좋아보입니다. 디비 인젝션에 취약합니다. 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

피라미드
2년 전
네 감사합니다. 저도 그래 생각해요 ^^

댓글을 작성하려면 로그인이 필요합니다.

저는 매번 이런식으로 서버측을 처리를 하고있는데 쿼리문 처리할때 꼭 위처럼 디비접속을 하지않고 처리 하는 법도 있는듯하여 올려봅니다. 혹시나 있으시면 조언좀 부탁드려요

==

없습니다. 다만 common.php에서 하고 있습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

s
sinbi Expert
2년 전

common.php 파일을 상단에 인클루드 시키면 됩니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

피라미드
2년 전
아...이게 스킨파일인데 그렇게 해도되나요?...;;
<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
상단에 여기에 추가하면 ..다른 문제 는 생기지 않은지요?

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인