2016-06-09 2 views
0

그래서 내가 에디터를 이용해을 삭제하는 cron 작업은 모든 24H 토큰있다 :예외에서 삭제 MYSQL는

$db->query('DELETE FROM download_token WHERE expiry < :expiry', array('expiry' => date('Y-m-d H:i:s'))); 

을하지만 난 MySQL은이 경우 사용자 ID (29)의 사용자 ID에서 다운로드 토큰을 삭제하지 마십시오 다른 모든 것은 삭제할 수 있지만 사용자 ID의 토큰은 삭제할 수 없습니다. 29

어떻게해야합니까? 이것에 대해서 : $db->query('DELETE FROM download_token WHERE user_id IS NOT '29' AND expiry < :expiry', array('expiry' => date('Y-m-d H:i:s')));

user_id는 같은 테이블에 저장됩니다.

나쁜 영어로 죄송합니다.

+0

그냥'AND'가 아니라'AND WHERE'이며,'! ='는 user_id를 테스트하기위한 find이어야합니다. 그래서'where user_id! = 29 AND expiry <: expiry ...'. –

+0

$ db-> query ('DELETE FROM download_token where user_id! = 29 AND expiry', array ('만료'=> 날짜 ('Y-m-d H : i : s')))); ? –

답변

1

당신은 단순히 쿼리에 다른 조건을 추가해야합니다 NULL != NULLNULL = NULL 모두가 NULL를 반환 :

$db->query(
    'DELETE FROM download_token WHERE expiry < :expiry AND user_id != :user_id', 
    array('expiry' => date('Y-m-d H:i:s'), 'user_id' => 29) 
); 

IS NOT 절은 그 값의 홀수 유형이기 때문에 NULL에 값을 비교하기 위해 예약되어 있습니다.

+0

대단히 고맙습니다. 제 문제를 해결해 주셔서 감사합니다. –

+0

@BrianHeldens 당신이 옳은 대답이라고 확신한다면 큰 녹색 체크 표시를 치십시오. 유사한 문제가있는 경우 다른 사람들이 솔루션을 찾도록 도와줍니다. – tadman

관련 문제