문제
데이터베이스에서 모든 사용자 정보를 가져 와서 타임 스탬프 (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 정보는 다음 링크를 방문하십시오
또는
SELECT * FROM accounts WHERE fourneendays < (NOW() - INTERVAL 14 DAYS);
나는 지금 ()가 원하는 타임 스탬프를 제공한다고 가정합니다. UTC에 있지 않을 것입니다 (그러나 당신은 그것을 알았습니까).
제휴하지 않습니다 StackOverflow