Brzmi to jak jakiś rodzaj wyścigu. Używasz MyISAM, więc możliwe, że aktualizacja może zostać odroczona (zwłaszcza jeśli na tej tabeli jest duży ruch).
true
return wskazuje, że Twój select
zapytanie zakończone poprawnie, ale zwrócone i pusty zestaw wyników (bez wierszy). Jeśli Twoja logika polega na odczekaniu, powiedzmy, 50 milisekund i spróbowaniu ponownie, może się okazać, że wszystko działa poprawnie.
Edytuj :Możesz spróbować zablokować tabelę przed wykonaniem UPDATE aż do ostatniego SELECT. Może to jednak pogorszyć wydajność innych części Twojej aplikacji. Najlepszą rzeczą do zrobienia jest sprawienie, by Twoja aplikacja była solidna w obliczu warunków wyścigowych.