Tôi thực sự đã lấy các tập lệnh của bạn, tải chúng lên máy chủ của tôi, tạo bảng cơ sở dữ liệu và kiểm tra tập lệnh.
Chỉ một hàng đang được chèn cho mỗi lần gửi.
Tập lệnh của bạn đang hoạt động chính xác.
Tuy nhiên, có một lỗ hổng trong quy trình thử nghiệm của bạn.
Tôi cũng đã kiểm tra bảng điều khiển Firebug và lệnh gọi AJAX đang hoạt động như mong đợi.
Trừ khi bạn có chẩn đoán khác, tôi không nghĩ mình có thể giúp bạn thêm.
Cảnh báo lỗi
Có một lỗi trong mã của bạn sẽ khiến bạn vô cùng đau buồn trong cuộc sống trong những năm tới ...
if($stmt){
echo "thank you .we will be in touch soon";
}
else{
echo "there was an error. try again later.";
}
if
này câu lệnh sẽ luôn đánh giá là true kể từ khi truy vấn được thực thi (tất nhiên là trừ khi MySQL không chạy).
Mục đích của bạn là xem liệu việc chèn có thành công hay không và để biết điều đó, bạn cần kiểm tra:
if($stmt->affected_rows){...}
$stmt->affected_rows
sẽ trả về -1 khi thất bại hoặc +1 khi thành công.
Chiến lược gỡ lỗi
(1) Thêm một trường bổ sung có dấu thời gian vào của bạn để bạn có thể xem khi nào các bản ghi được chèn. Điều này sẽ cung cấp cho bạn cái nhìn sâu sắc hơn về những gì đang diễn ra.
(2) Làm trống bảng của bạn và thử lại mã của bạn. Bạn có thể nghĩ rằng bạn đang nhận được nhiều lần chèn nhưng cũng có thể là bạn đã nhấn nút gửi 4 lần.