In realtà ho preso i tuoi script, li ho caricati sul mio server, ho creato la tabella del database e ho testato lo script.
Viene inserita una sola riga per invio.
Il tuo script funziona correttamente.
Tuttavia, c'è un difetto nella tua procedura di test.
Ho anche controllato la console Firebug e la chiamata AJAX funziona come previsto.
A meno che tu non abbia altri strumenti diagnostici, non credo di poterti aiutare ulteriormente.
Avviso di bug
C'è un bug nel tuo codice che ti causerà un immenso dolore nella tua vita negli anni a venire...
if($stmt){
echo "thank you .we will be in touch soon";
}
else{
echo "there was an error. try again later.";
}
Questo if
l'istruzione restituirà sempre true poiché la query viene eseguita (a meno che, ovviamente, MySQL non sia in esecuzione).
Quello che volevi è vedere se l'inserimento ha avuto successo e, per questo, devi controllare:
if($stmt->affected_rows){...}
$stmt->affected_rows
restituirà -1 in caso di errore o +1 in caso di successo.
Strategie di debug
(1) Aggiungi un campo extra nel tuo con un timestamp in modo da poter vedere quando i record vengono inseriti. Questo ti darà più informazioni su cosa sta succedendo.
(2) Svuota il tuo tavolo e prova di nuovo il tuo codice. Potresti pensare di ricevere più inserti, ma potresti anche premere il pulsante di invio 4 volte.