2010-11-25 24 views
1

je le code suivant:Tableau Zend Db delete() ne fonctionne pas correctement

$time = 60 * 60 * 24 * 3; 

$usersTable = new Application_Model_Db_Users(); 

$where = 'active = false AND registration_time < ' . time() - $time; 
$usersTable->delete($where); 

Mais quand il est exécuté, il supprime toutes les lignes de la table, alors que quand je lance

DELETE FROM users 
WHERE active = false 
AND registration_time < 1290500000 

Seuls ceux qui correspondent aux critères sont supprimés. Quel est le problème?

+0

pouvez-vous confirmer Zend_Db_Table évalue à la même requête que la requête que vous affichez? Ajoutez un Zend_Db_Profiler pour le savoir. Aussi, cela n'aurait-il pas plus de sens de calculer l'intervalle en SQL au lieu de PHP. – Gordon

Répondre

3

Vous avez juste besoin d'envelopper avec des parenthèses, de sorte que time() - $ time évalue correctement.

$where = 'active = false AND registration_time < ' . (time() - $time);