Niteliğin MySQL değer artışı - bazen özlüyor (?)

4 Cevap php

Ben şöyle görünümleri sütun artırmak istiyorum benim tablo A'da görünümleri adında bir sütun var:

UPDATE A set views = views + 1 WHERE ID = blabla LIMIT 1;

This seems like the way to do it, at least to me. Or so I thought.

(PHP) ben ne zaman gibi görünüyor:

$views = get_viewcount($id);
$views++:
save_viewcount($id, $views);  //here we just update views with the $views variable

Bu her zaman çalışır. Ama sonra get_viewcount ile DB için ekstra gidiş dönüş ceza ve PHP ile artan ve geri gönderme taşıyor. Her zaman çalışır.

"Bazen" eser üzerindeki SQL deyimi. Biliyorum - Ben de programlama "bazen" kelimesinden nefret - ama başka bir deyişle, ben tek seferde doğrudan SQL'de bunu zaman ama bazen bunu artırmak değil ZAMAN diyemeyiz.

Önerileriniz?

4 Cevap

Eğer sistemde hata izole etmek gerekir. Bu very unlikely MySQL ile ilgili bir sorun olmaktır.

Ben Bu büyük olasılıkla sorgu nedeniyle sadece sisteminizdeki bazı mantık yürütüldüğünde, veya bağlı isteği o sorguyu ulaşmadan önce biten / ölüyor almıyor vb, testlerin bir ton çalışan ve veritabanı günlükleri bakarak öneririm.

Sen yanlış bir şey yapıyor olması gerekir.

Eğer MySQL söylersen:

UPDATE foo SET views = views+1 WHERE id = 1337;

o will bunu artırmak.

Komut satırında deneyin.

Eğer sql sql deyimi kendisi değil, başarısız çalıştırmak için kullandığınız ne olursa olsun kod.

Ve bir UPDATE sorgusu = 1 LIMIT ne anlamı var?

Ne yapıyor tavsiye vs o çalışıyor sorgu, vb, geri gidiyor sonucu, olabildiğince her şey echo PHP ayarlamaktır. Ne masalarda yürütülüyor sorguları görmek için varsa, SQL günlükleri bak. Temelde tam where başarısız noktası görmek gerekir.

Eğer SQL deyimi bazen çalıştığını devlet, o sizin code dan çağrıldığını veya istemi (ki ne kullandığınız varsayarak) bir mysql aracılığıyla çağrıldığını temelinde olduğunu? O önce ise, size kod olarak aynı sonucu almak görmek için bir komut istemine çalışan denediniz mi? Değilse, o zaman veritabanı ekarte ve kodunuzu özellikle bakarak başlayabilirsiniz.

İyi şanslar!

Ben nereye bakmak ve size işlem BEGIN ne zaman / işleme taahhüt ediyorum.

Bu SQL dönüş kodu denetimi ve "kilitlenme" uyarı eksik değil olabilir.