1 row affected, lecz więcej ich w bazie się pojawia

0

Witam.
Natrafiłem na dziwny problem.
Wszystkie skrypty i stronki działają dobrze. Trafiłem jednak na taki moment, w którym utknąłem. Nie jest to coś z pozoru poważnego, ale na pewno brzydkie :)
Otóż wykonuję polecenie INSERT tego typu:
INSERT INTO tabela (nr1, nr2) SELECT 666, nr1+1 FROM tabela ORDER BY id DESC LIMIT 1
Efekt affected_rows przez PHP pokazuje 1. Jednak w bazie pojawiają się 2 rekordy.
Wykonując to samo przez phpmyadmin robi się jeden wiersz. Zamknąłem więc to pod if'em sprawdzając wartość którą zmieniam wewnątrz, by na pewno kod się wykonał raz. Affected_rows to potwierdza. Stronka nie przeładowuje się (w sumie najprostsza z możliwych stron z kodem PHP.. uprościłem możliwie maksymalnie, nadal to samo). Zmieniając SELECT na "SELECT 666,777 FROM ..." nadal powstają dwa wiersze. Nie mam też już parametrów nic, tylko PREPARE i EXECUTE. Co jeszcze może być nie tak? Spotkał się ktoś z czymś takim już może?
Triggerów w tabeli też nie mam.
Pozdrawiam i z góry dzięki

0

Najlepiej takie dziwne problemy sprawdzać profilerem, wtedy dokładnie będziesz wiedział po której stronie jest błąd(wiedząc co trafia do bazy danych).

0

Słyszałem że brak favico to powoduje :-D

0

jeżeli affected_rows zwraca 1 to na bank został zainsertowany tylko jeden wiersz
jeżeli wstawiają się dwa wiersze to zdecydowanie znaczy że skrypt został wywołany dwa razy
spróbuj z inną przeglądarką, sprawdź włączone pluginy
brak faviconki faktycznie może być czasem powodem bo przeglądarka wtedy próbuje na własną rękę znaleźć favicon - przy korzystaniu z jakiegoś frameworka może to oznaczać dodatkowe wywołanie skryptu

skrypty z INSERT czy DELETE powinny być dostępne tylko metodą POST, a najlepiej zaraz po obsłużeniu POST przekierować na GET - wtedy masz niemal pewność że przeglądarka nie wyśle dwa razy zapytania

0
bsgf napisał(a):

jeżeli affected_rows zwraca 1 to na bank został zainsertowany tylko jeden wiersz
jeżeli wstawiają się dwa wiersze to zdecydowanie znaczy że skrypt został wywołany dwa razy
spróbuj z inną przeglądarką, sprawdź włączone pluginy
brak faviconki faktycznie może być czasem powodem bo przeglądarka wtedy próbuje na własną rękę znaleźć favicon - przy korzystaniu z jakiegoś frameworka może to oznaczać dodatkowe wywołanie skryptu

skrypty z INSERT czy DELETE powinny być dostępne tylko metodą POST, a najlepiej zaraz po obsłużeniu POST przekierować na GET - wtedy masz niemal pewność że przeglądarka nie wyśle dwa razy zapytania

POST uzywam. Pomysl z przekierowaniem wydaje sie byc ok. Przed tym przepadowaniem sie bronilem, ale pokombinuje jeszcze w takim razie. Pomysl z favikonka ciekawy, ale tez wyprobuje ;) tez mi sie wydaje, ze cos ze skryptem, ale juz powoli nie bylem pewien. Tym bardziej, ze chrome wywala ladny komunikat po przekierowaniu z formularza. Moze dlatego nie bylem tego tak pewien. Ale wiadomo, latwiej szukac bledu, jak wiadomo gdzie.. heh

A jakos dobry profiler dla MySQL? Mozna Winsharkiem, ale jest cos moze dedykowanego co byscie polecili? ;)

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1