E' un problema che ho sempre avuto e non ho mai trovato una vera soluzione, se non presumere che l'update avvenga comunque correttamente

Sto facendo una classe per l'aggiornamento del glossario del mio sito solo che il parametro $result->affected_rows del mio update restituisce sempre un valo inferiore a 1, anche se l'aggiornamento è avvenuto correttamente sul database.
Qualcuno sa un sistema differente per controllare se l'aggiornamento è accenuto con successo?

Codice PHP:
if ($gloss_id>0){
    
$query="UPDATE gloss SET nome = ? , slug = ? , sign = ? WHERE id = ?";
    
// prepara
    
$result $tpdb->prepare($query) or die($mysqli->error);
    
//fissare i parametri
    // formattare lo slug!
        
    
$result->bind_param("sssi"$name$slug$description$gloss_id);
} else {
    
// imposta la query per inserire gli utenti
    
$query="INSERT INTO gloss ( nome , slug , sign, word_insert) VALUES ( ?, ?, ?,NOW())";
    
$result $tpdb->prepare($query) or die($mysqli->error);
    
//fissare i parametri
    // formattare lo slug!
        
    
$result->bind_param("sss"$name$slug$description);
}
$result->execute();
$this->last_id=$tpdb->insert_id;
if (
$result->affected_rows>0) {
    return 
$tpdb->insert_id;
} else {
    return 
false;