私は実際にスクリプトを取得してサーバーにロードし、データベーステーブルを作成して、スクリプトをテストしました。
送信ごとに挿入される行は1つだけです。
スクリプトは正しく機能しています。
ただし、テスト手順に欠陥があります。
Firebugコンソールも確認しましたが、AJAX呼び出しは期待どおりに機能しています。
他の診断がない限り、私はこれ以上あなたを助けることができないと思います。
バグアラート
コードにバグがあり、これからの人生に大きな悲しみをもたらすでしょう...
if($stmt){
echo "thank you .we will be in touch soon";
}
else{
echo "there was an error. try again later.";
}
このif
クエリが実行されるため、ステートメントは常にtrueと評価されます(もちろん、MySQLが実行されていない場合を除く)。
挿入が成功したかどうかを確認することを目的としており、そのためには、以下を確認する必要があります。
if($stmt->affected_rows){...}
$stmt->affected_rows
失敗すると-1を返し、成功すると+1を返します。
デバッグ戦略
(1)レコードがいつ挿入されたかを確認できるように、タイムスタンプ付きのフィールドを追加します。これにより、何が起こっているのかについてより多くの洞察が得られます。
(2)テーブルを空にして、コードを再試行してください。複数の挿入が行われていると思われるかもしれませんが、送信ボタンを4回押した可能性もあります。