Фрагмент кода. Смысл – выбрать из нескольких записей одну с наименьшим значением ban_use.buView и увеличить это значение на единицу. Код (Text): $qstr = "SELECT banners.bId, banners.bLimit, banners.bStatus, ban_use.buDate, ban_use.buBid, ban_use.bukId, ban_use.buView FROM banners INNER JOIN ban_use ON banners.bId = ban_use.buBid WHERE ban_use.buView<banners.bLimit AND ban_use.buDate=NOW() AND banners.bStatus=1 ORDER BY ban_use.buView, ban_use.bukId LIMIT 1"; $res = mysql_query($qstr); $row = mysql_fetch_assoc ($res); $n = $row['buView']+1; $d = $row['bukId']; //Обновляем запись $qk = "UPDATE ban_use SET buView=$n WHERE bukId=$d"; echo 'Запрос: '.$qk.'<br><br>'; //Для контроля mysql_query($qk); echo 'Результат обновления: '.mysql_info().'<br><br>'; В браузере вижу Запрос: UPDATE ban_use SET buView=204 WHERE bukId=16 Результат обновления: Rows matched: 1 Changed: 1 Warnings: 0 Далее мистика – обновляются все записи, для которых выполняется ban_use.buView<banners.bLimit AND ban_use.buDate=NOW() AND banners.bStatus=1. Причём возникновение этой проблемы зависит от браузера (в Опере её нет. В ИЕ и ФФ – есть). Бьюсь об стенку...
Из запроса banners.bId, banners.bLimit, banners.bStatus, ban_use.buDate, ban_use.buBid, ban_use.bukId, ban_use.buView FROM banners INNER JOIN ban_use ON banners.bId = ban_use.buBid Поля первой таблицы bId, bLimit, bStatus Второй bukId, buDate, buBid, buView Связь bId = buBid
До запроса bukId,buDate,buBid,buView 16,2007-12-19,1,258 17,2007-12-19,2,257 После bukId,buDate,buBid,buView 16,2007-12-19,1,259 17,2007-12-19,2,258 bukId – первичный ключ, должен определять однозначно. Но, увы...
Да, и логи mySQL тоже говорят, что два раза. В коде нет циклов. В-общем, иду искать бубен. Или переделывать фсё...
Премного благодарю всех участвовавших, проблема оказалась совсем не тут (долгая и грустная история о потерянном времени).