2010-08-06 2 views
1

설명 :데이터베이스에서 (MySQL) 마이너스 개월, PHP 코드입니까?

구매 기능을 수행 할 때마다 사용자가 구입할 때마다 내 사이트의 특수 액세스 페이지에 1 개월간의 권한이 추가됩니다. 사용자로부터 불만이 접수되었습니다. 문제 섹션을 읽어보십시오.

문제 :

500 사용자 중, 예를 들어 있음, 소수의 사용자가있다 : 구매 오늘 만들지 만, 만기일이 1 또는 2 일 또는 몇 달 뒤로 간다. 예를 들어 내가 MySQL 데이터베이스에 삽입하기 전에 1개월을 추가 사용하고 코드는

됩니다

:

그는 유효 기간은 2010 년 5 월 25

내 PHP는 코드가 3 년 8 월 2010 년 구입

// I already set the default timezone 
$expiryDate = date("Y-m-d H:i:s",strtotime("+1 month")); 

코드가 잘못되었거나 서버가 잘못되었거나 제 3 자 지불 게이트웨이가 잘못되어 있는지 확실하지 않습니다. 해결 방법을 알려주십시오.

! 중요한 질문!

만료 날짜가 늦어지는 원인은 무엇입니까? 당신이 날짜 또는 날짜 필드와 데이터베이스에서 만료 시간을 저장하는 경우

답변

0

, 당신은이 업데이트를 수행해야합니다

UPDATE table SET expiry=DATE_ADD(expiry, INTERVAL 1 MONTH) WHERE ...; 

전체 세부 사항 here.

+0

안녕하세요. 저는 구매 날짜, 만료 날짜와 같은 인수를 허용하는 updateDB 함수를 작성했습니다. 왜냐하면 장래에 다른 종류의 구매 (1 일, 2 일 등)가있을 수 있기 때문입니다. 내 기능을 수정해야합니까? 아니면 다른 해결책이 있습니까? –

+0

DATE_ADD 문서를 내 답변에 링크 된 것으로 읽으십시오. 사용할 수있는 다양한 간격 유형이 있으며 빼기가 필요할 경우 항상 DATE_SUB이 있습니다. PHP 날짜 논리에서 동등한 MySQL 문으로의 매핑 함수를 설정하기에 충분히 간단해야합니다. 물론 보통 날짜 계산에는 문제가되는 부분 만 있습니다. 30 분의 31 대신 28/29 일을 주겠다는 것을 알기 위해서만 2 월에 한 달의 액세스를 구입하는 것을 싫어합니다. –

0

strtotime과 함께 +1 month을 사용하는 데 문제가 있습니다. 기능 문서 페이지에는 몇 가지 해결책이 있습니다. 그러나 내가 당신이라면 Zend_Date와 같은 테스트 된 라이브러리를 사용할 것입니다. 당신은 제안 된대로 SQL을 사용할 수 있지만 당신의 DB 특정 코드를 어떻게 구성했는지부터 시작하려고합니다.