'Yeni' satır bulmak gerekiyor güncelleme sorgusu

2 Cevap php

Benim çıkış fonksiyonu oturumların bir listesini son satır güncellemek gerekiyor.

Bu benim, ancak bu bile sözdizimi doğrulama geçmez, ile geldi budur.

$query =
    'UPDATE user_logins
     SET active = 0
     WHERE user_id = ' . Database::instance()->escape($this->getCurrentUserId()) . '
     AND datetime = MAX(datetime) LIMIT 1';

Esasen aynı user_id değeri ile 30 kadar olabilir. Ben sadece son giriş bilgilerinizi güncellemek istiyorum. Bu tabii ki en son datetime değeri olacaktır.

Ben yanlış ne yapıyorum?

2 Cevap

Bu çalışması gerektiğini, datetime sütun bir timestamp veya datetime yazın alandır sağladı.

$query =
    'UPDATE user_logins
     SET active = 0
     WHERE user_id = ' . Database::instance()->escape($this->getCurrentUserId()) . '
     ORDER BY datetime DESC LIMIT 0,1';

You would have to use a subquery for this.

$query =
    'UPDATE user_logins
     SET active = 0
     WHERE user_id = ' . Database::instance()->escape($this->getCurrentUserId()) . '
     AND datetime = (SELET MAX(datetime) FROM user_logins WHERE user_id = '' . Database::instance()->escape($this->getCurrentUserId()) . ') LIMIT 1';

Ya da böyle bir şey.

Edit: As the comment states, this will not work because of lack of support in MySQL. I'll leave this answer for the reference.