Bel titolo criptico eh?! Ma non sapevo che scriverci.
Sto usando CodeIgniter per un sito.
Nel DB ho una tabella con una colonna chiamata "banner" definita come
int not null default 0
Questa colonna va aggiornata man mano che si eseguono delle operazioni, questo è il codice che esegue l'update.
Codice PHP:
$set = array('banner' => $row['banner']+1); //$row['banner'] contiene il vecchio valore del campo banner
$this->db->where('id',$row['id']);
$this->db->update($table,$set);
if ( $this->db->affected_rows() == 1)
{
$inserzione['active_banner']--;
}
else //update non eseguito
{
$this->db->trans_rollback();
return FALSE;
}
Il problema è che finché $row['banner']+1 vale 1 o 2 il tutto funziona, quando vale 3 invece
$this->db->affected_rows() vale 1 (ho provato a stamparlo), ma viene eseguito comunque il ramo else, come se invece non fosse 1.
Ho provato a stampare l'sql generato per l'update ed è corretto, usandolo direttamente su phpmyadmin non da problemi, ma neanche dal sito dato che il valore di affected_rows è 1.
Non riesco a capire perché si vada a finire nell'else.
Qualche consiglio?