Salve,
allora su suggerimento di badaze ho cambiato tutto in mysqli e ho provato questo codice trovato tra degli esempi online:
codice:
$connessione = new mysqli($server, $user, $pass, $db);
if ($connessione->connect_errno) {
 echo 'Non riesco a connettermi: ' . $connessione->connect_error ;
}
$connessione->autocommit(FALSE);
$query = "update jos_virtuemart_categories set product_per_row = '3' where virtuemart_category_id = '140'";
$query1 = "update jos_virtuemart_categories_it_it set slug = 'Cavi-Auto4' where virtuemart_category_id = '140'";
try {
  $connessione->begin_transaction();
  $result = $connessione->query($query);
  $result1 = $connessione->query($query1);
  $connessione->commit();
} catch (Exception $e) {   
     $connessione->rollback();
}
echo 'ciao';
$mysqli->close();
sicuramente c'è qualcosa che non va.
In questo esempio ho messo 2 query.
A me interessa che se una di queste due query fallisce, l'altra non deve essere eseguita lasciando entrambe le tabelle invariate.
Nell'esempio che ho inserito, nella prima query, assegno valore 3 al campo product_per_row che non esiste (in realtà il campo si chiama products_per_row) quindi la prima query fallisce.
Mentre la seconda la esegue come se niente fosse, in sostanza non entra proprio nel rollback.

Cosa stò sbagliando ancora?
grazie.