Wziąłem twoje skrypty, załadowałem je na mój serwer, utworzyłem tabelę bazy danych i przetestowałem skrypt.
W każdym zgłoszeniu wstawiany jest tylko jeden wiersz.
Twój skrypt działa poprawnie.
Jednak w twojej procedurze testowej jest błąd.
Sprawdziłem również konsolę Firebug i wywołanie AJAX działa zgodnie z oczekiwaniami.
Jeśli nie masz innej diagnostyki, nie sądzę, abym mogła ci dalej pomóc.
Powiadomienie o błędzie
W Twoim kodzie jest błąd, który w nadchodzących latach spowoduje ogromny smutek w Twoim życiu...
if($stmt){
echo "thank you .we will be in touch soon";
}
else{
echo "there was an error. try again later.";
}
Ten if
instrukcja będzie zawsze oceniać jako prawda, ponieważ zapytanie jest wykonywane (chyba że MySQL nie jest uruchomiony).
Zamierzałeś sprawdzić, czy wstawienie się powiodło, i w tym celu musisz sprawdzić:
if($stmt->affected_rows){...}
$stmt->affected_rows
zwróci -1 w przypadku niepowodzenia lub +1 w przypadku sukcesu.
Strategie debugowania
(1) Dodaj dodatkowe pole ze znacznikiem czasu, aby można było zobaczyć, kiedy rekordy zostały wstawione. Dzięki temu uzyskasz lepszy wgląd w to, co się dzieje.
(2) Opróżnij tabelę i spróbuj ponownie. Możesz pomyśleć, że otrzymujesz wiele wstawek, ale może się również zdarzyć, że naciśniesz przycisk przesyłania 4 razy.