2016-06-09 69 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下載令牌在這種情況下,用戶ID是29可以刪除一切,但不是用戶標識的標記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',而不是'和WHERE','!='來測試user_id。所以'WHERE user_id!= 29 AND expiry <:expiry ...'。 –

+0

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

回答

1

您只需將另一個條件添加到您的查詢:

$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子句保留值,因爲這是一個奇怪的類型的值進行比較,以NULLNULL != NULLNULL = NULL都返回NULL

+0

非常感謝你解決了我的問題。 –

+0

@BrianHeldens如果你確信這是正確的答案,那麼就在那裏啪啪響一下大綠色的選中標記。如果他們有類似的問題,它可以幫助其他人找到解決方案。 – tadman