멤버십 회원 등급 변경 오류 문의,
본문
그누, 영카드로 회원 멤버십으로 운영할 수 있게 개발한 부분이 있습니다.
개발 부분 : 상품마다 멤버십이 있음. 회원은 레벨5, 만료회원은 레벨2로 변경. 다른 상품에 멤버십이 아직 유효하면 변경 X
이번에 서버 이전을 하면서(가상서버 호스팅 > 웹호스팅) 변경된 부분이 있는데요.
이후부터 멤버십 만료 회원이 레벨5 > 레벨2로 변경이 안 되는데.
서버 이전 해주신 개발자님이 크론탭을 사용해야 한다고 해서 코드를 이렇게 변경하셨는데, 문제점을 알 수 있을까요??
코드 변경전
<?php
$conn = mysql_connect("localhost", "id", "password");
mysql_select_db("id", $conn);
$now = time();
$todate = date("Y-m-d", $now);
// 서비스 만료일 판단
$msQuery = "SELECT * FROM member_service WHERE stats NOT IN ('cancel', 'pause') AND sp_date < '".$todate."' AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id) ";
$msResult = mysql_query($msQuery, $conn);
while($msRow = mysql_fetch_array($msResult)) {
// 이용중인 다른 서비스가 있는지 확인
$otQuery = "SELECT
COUNT(ms_no) AS cnt
FROM
member_service
WHERE
mb_id = '".$msRow['mb_id']."'
AND stats NOT IN ('cancel', 'pause')
AND st_date <= '".$todate."'
AND sp_date >= '".$todate."'
AND ms_no != '".$msRow['ms_no']."'
AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id)";
$otResult = mysql_query($otQuery, $conn);
$otRow = mysql_fetch_array($otResult);
if($otRow['cnt'] > 0) { // 이용중인 다른 서비스가 있으므로
// pass
} else {
// 회원레벨이 4, 5에 해당되는지
$mbQuery = "SELECT mb_level FROM g5_member WHERE mb_id = '".$msRow['mb_id']."' LIMIT 1";
$mbResult = mysql_query($mbQuery, $conn);
$mbRow = mysql_fetch_array($mbResult);
if($mbRow['mb_level'] == "4" || $mbRow['mb_level'] == "5") {
$upQuery = "UPDATE g5_member SET mb_level = '2' WHERE mb_id = '".$msRow['mb_id']."' ";
mysql_query($upQuery, $conn);
// echo $msRow['mb_id']." : UPDATE mb_level = '2'\r";
}
}
}
?>
코드 변경후 (회원 등급 변경이 안됨)
<?php
$link = mysqli_connect("localhost", "id", "password");
mysqli_select_db($link, "id");
$now = time();
//$todate = date("Y-m-d", $now);
$todate = $_GET['todate'];
if($todate == "") {
echo "테스트 일자가 없습니다.";
exit;
}
echo "처리일자 : ".$todate."<br />";
// 서비스 만료일 판단
$msQuery = "SELECT * FROM member_service WHERE stats NOT IN ('cancel', 'pause') AND sp_date < '".$todate."' AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id) ";
$msResult = mysqli_query($link,$msQuery);
while($msRow = mysqli_fetch_array($msResult)) {
// 이용중인 다른 서비스가 있는지 확인
$otQuery = "SELECT
COUNT(ms_no) AS cnt
FROM
member_service
WHERE
mb_id = '".$msRow['mb_id']."'
AND stats NOT IN ('cancel', 'pause')
AND st_date <= '".$todate."'
AND sp_date >= '".$todate."'
AND ms_no != '".$msRow['ms_no']."'
AND ms_no IN (SELECT MAX(ms_no) FROM member_service GROUP BY od_id)";
$otResult = mysqli_query($link,$otQuery);
$otRow = mysqli_fetch_array($otResult);
if($otRow['cnt'] > 0) { // 이용중인 다른 서비스가 있으므로
// pass
// echo $msRow['mb_id']." : 다른서비스 있음 - ".$msRow['od_id']."<br />";
} else {
// 회원레벨이 4, 5에 해당되는지
$mbQuery = "SELECT mb_level FROM g5_member WHERE mb_id = '".$msRow['mb_id']."' LIMIT 1";
$mbResult = mysqli_query($link, $mbQuery);
$mbRow = mysqli_fetch_array($mbResult);
if($mbRow['mb_level'] == "4" || $mbRow['mb_level'] == "5") {
$upQuery = "UPDATE g5_member SET mb_level = '2' WHERE mb_id = '".$msRow['mb_id']."' ";
mysqli_query($link, $upQuery);
echo $msRow['mb_id']." : UPDATE mb_level = '2'<br />";
}
}
}
?>
답변 2
해당 파일을
URL 연결이 가능한 폴더로 옮겨서
브라우저에서 오류가 나는지 확인해 보세요.
$conn = mysql_connect("localhost", "id", "password");
$link = mysqli_connect("localhost", "id", "password");
변경된 부분은 이부분인거같은데 디비 연결 재확인 바랍니다
답변을 작성하시기 전에 로그인 해주세요.