tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

Problem s vykonanim transakce

před 9 lety

kenod
Člen | 3

Zdravim,
mam zhruba takovyto kod:

<?php
dibi::begin('updateusers');
foreach ($users as $n => $row) {
    $prirustek = $row['hero_charisma'];
    $novy_stav = $row['points'] + $prirustek;

    if ($novy_stav != $row['points']) dibi::query('UPDATE users SET points = %i', $novy_stav, ', consumption_residents = %s', $novy_stav.'-'.(4*$novy_stav),' WHERE id=%i LIMIT 1', $row['id']);
}
dibi::commit('updateusers');
?>

V logu potom vidim provedeni jednotlivych updates, ale v databazi se nic nezmeni. Pokud transakce vyhodim, tak vse jede jak ma. Nevite kde muze byt zakopany pes?

Pripadne budu rad za tipy jak jinak vyresit rychly update 10 000 uzivatelu v co nejkratsim case.

před 9 lety

David Grudl
Nette Core | 6806

Podporuje databáze a používáš správně savepointy? Tj. ty parametry u metod begin() a commit(). Pokud nechceš používat savepointy, parametry odstraň.