Premessa: $w_TAB000_r_cnt è una cosa, $TAB000_obj->TAB000_r_cnt è un'altra.
Codice PHP:
// $TAB000_sql sarà un result set, ma non capisco perché fai questa cosa se poi
// sovrascrivi la variabile senza usarla
$TAB000_sql = $data->query("SELECT TAB000_r_cnt FROM TAB000 WHERE TAB000_id = $w_TAB000_id_ric");
if(mysql_num_rows($TAB000_sql) > 0)
{
// $TAB000_obj è un oggetto contenente il risultato della query
$TAB000_obj = $data->estrai($TAB000_sql);
// a $w_TAB000_r_cnt assegni il contenuto di $TAB000_obj->TAB000_r_cnt
// ovvero il valore 5
$w_TAB000_r_cnt = $TAB000_obj->TAB000_r_cnt;
If ($wpm000_tipope == "W")
{
// STAI INCREMENTANDO DI 1 $w_TAB000_r_cnt, NON $TAB000_obj->TAB000_r_cnt !!!
// quindi $w_TAB000_r_cnt vale 6, mentre $TAB000_obj->TAB000_r_cnt continua a valere 5 !!!
$w_TAB000_r_cnt = $w_TAB000_r_cnt + 1;
$TAB000_sql = $data->query("UPDATE TAB000 SET
TAB000_r_cnt = $w_TAB000_r_cnt
WHERE TAB000_id = $w_TAB000_id_ric");
echo $TAB000_obj->TAB000_r_cnt; // contiene 5 !!!!
// ed è giusto che sia ancora 5, perché non l'hai modificata questa variabile
// tu hai modificato $w_TAB000_r_cnt
// se fai di nuovo la select conterrà 6, ma finché non la fai conterrà ancora il valore precedente
}
}