Witajcie!
Zagwozdka dotyczy bardziej SQL niż PHP. Mam sobie tabelę z 3ma polami: version, relnote, reldate; przechowuja kolejno wersję CMSu (np. 1.02), notkę wersji (np. wprowadzone zmiany) oraz datę wydania w formie timestampa.
I teraz gdy dostaję zapytanie o aktualizację najpierw sprawdzam, czy CMS który woła o update może być updatowany, tj czy taka wersja istnieje w bazie updatów (np. czy nie owołuje się wersja developerska które z zasady mają dezaktywowany autoupdate).
Wywołuję sobie
  1. $this->_dbObj->fetchFirst("SELECT * FROM `versions` WHERE `version` = :ver", array(":ver" => array("data" => $params["ver"], "dataType" => PDO::PARAM_STR)));
i sprawdzam czy zwróciło pusto czy dane, jeśli dane chcę sprawdzić czy jest nowa wersja ... i tu jest problem.
Gdyby numery wersji były kolejne wszystko byłoby OK ale nie chcę się tak ograniczać.
Da się pobrać (tzn. jak ;]) rekord następny względem tego sortując po kolumnie verion?
Dodanei pola auto increment też tu nic nie da - muszę zakładać, że zdarzy się sytuacja wypadnięcia rekordu.

EDIT:
Problem rozwiązany prosto jak budowa cepa smile.gif

  1. <?php
  2. $dta = $this->_dbObj->fetchAll("SELECT * FROM `versions` WHERE `version` >= :ver ORDER BY `version` ASC LIMIT 0,2", array(":ver" => array("data" => $params["ver"], "dataType" => PDO::PARAM_STR)));
  3. if($dta===false) {
  4. //Blad bazy
  5.  
  6. } elseif(empty($dta)) {
  7. //Brak wersji w bazie
  8.  
  9. } elseif(count($dta) == 1) {
  10. //Wersja jest aktualna
  11.  
  12. } elseif(count($dta) == 2) {
  13. //Istnieje nowsza wersja
  14.  
  15. } else {
  16. //Hmm ... chyab to nie moze sie wykonac?
  17. }