문제

데이터베이스에서 모든 사용자 정보를 가져 와서 타임 스탬프 (14 개)를 확인하고 시간이 지남에 따라 확인하려고합니다. 시간 비트가 작동했지만 시간이> 14 일 때 모든 것을 보낼 수는 없습니다.

 $result1 = mysql_query("SELECT * FROM accounts") or die (mysql_error()); 
 while ($row1 = mysql_fetch_array($result1)) {
 $users_email = $row1['email'];
 $user_name = $row1['user'];
 $days_time = $row1['fourteendays'];
 if($timenow > $days_time){
 mail( $users_email, $subject, $emailbody, $headers);
 echo "email sent!";
 }
 }
도움이 되었습니까?

해결책

쿼리의 모든 데이터를 철회하는 대신 SQL에서 날짜 비교를하는 것이 좋습니다.

SELECT * FROM accounts WHERE DateDiff(Now(), fourteendays) > 14

또한 데이터베이스의 해당 열에 무엇이 있습니까? 그것이 타임 스탬프라면 왜 그렇게 부르지 않겠습니까? 내가 뭔가를 놓치고 있습니까?

다른 팁

노력하다. 그것은 14 일보다 크거나 동일합니다.

 if($timenow >= $days_time){
     mail( $users_email, $subject, $emailbody, $headers);
    echo "email sent!";
 }

또한 선택 *은 나쁜 연습입니다. 해당 쿼리에서 필요한 필드 만 선택해야합니다.

스크립트의 이전 어딘가에 '$ timenow'변수를 이미 설정했다고 가정하고 비교할 때 두 시간 형식이 동일인지 확인해야합니다. 그것은 과거의 내 문제였습니다.

날짜 관련 PHP 정보는 다음 링크를 방문하십시오

http://ca.php.net/manual/en/function.date.php

또는

SELECT * FROM accounts WHERE fourneendays < (NOW() - INTERVAL 14 DAYS);

나는 지금 ()가 원하는 타임 스탬프를 제공한다고 가정합니다. UTC에 있지 않을 것입니다 (그러나 당신은 그것을 알았습니까).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top