szczrzcz
4.07.2017, 20:39:47
Używam PDO, mysql. Odpalam skrypt. Nieudany, w bazie nie dodano rekordu zapytania INSERT. Odpalam skrypt ponownie, debuguję. Debuger wskazuje liczbę wierszy tabeli jakby poprzednio dodano nowy rekord. Tabela w Phpmyadmin przeciwnie - nic nie dodano.
Co sprawia, że w kodzie jest nieaktualna wersja.Jak wyczyścić. Restart komputera pomaga, no ale bez jaj, nie będę restartował co chwilę.
Ma to związek z metodą PDO::lastInsertId. Ona zwraca błędna wartość.
viking
4.07.2017, 21:09:02
Może zależeć od transakcji. Pokaż kod. Zresztą skoro nie zapisuje to jaki ma być wynik?
szczrzcz
5.07.2017, 08:05:02
odkryłem że chodzi o wskaźnik AUTO_INCREMENT, nieudane próby insert inkrementują go mimo że id primarykey się nie zwiększa
ALTER TABLE penguins AUTO_INCREMENT=1001;
ale chyba tak ma być.
Pyton_000
5.07.2017, 08:37:46
Jeśli masz InnoDB i insert się nie powiedzie to Autoincrement się zwiększa.
nospor
5.07.2017, 09:59:31
Kolejna sprawa jest to, ze z tego co ty napisales to ty poprawnosc zapytania sprawdzasz przez pobranie lastInstertId. Jest to oczywiscie bledne podejscie. Poprawnosc zapytania masz sprawdzasz przez wynik funkcji wykonujacej zapytanie bo to ona informuje cie czy sie powiodlo czy nie. A juz najlepiej jak przerzucisz sie na wyjatki w PDO i to one beda cie infofmowaly ze cos poszlo nie tak.
Pyton_000
5.07.2017, 10:02:54
Ba z tego co pamiętam `lastInstertId` nie gwarantuje nawet że dostaniesz poprawny wynik
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.