쿼리문 처리시 관련문의드립니다.
본문
안녕하세요 질문하나 가지고왔습니다. ㅎ;
$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
스킨 파일이면 굳이 conn을 안 하시고 쿼리를 실행하셔도 되지 않나요?
$result = $conn->query($sql);
->
$result = sql_query($sql);
이렇게 하셔도 될꺼 같습니다.
common.php 파일을 상단에 인클루드 시키면 됩니다.
저는 매번 이런식으로 서버측을 처리를 하고있는데 쿼리문 처리할때 꼭 위처럼 디비접속을 하지않고 처리 하는 법도 있는듯하여 올려봅니다. 혹시나 있으시면 조언좀 부탁드려요
==
없습니다. 다만 common.php에서 하고 있습니다.
스킨 파일에서 왼만하면 작업을 안하시는것이 좋아보입니다. 디비 인젝션에 취약합니다.