$ stmt-> bind_param () không kiểm tra các biến đã cho cho một kiểu nhất định, nó chỉ chuyển đổi chúng thành kiểu được chỉ định. Và chuỗi 'aaaaaaa' của bạn được chuyển đổi thành giá trị int:0. Đó là cách php thực hiện.
Câu lệnh chèn cơ sở dữ liệu là nơi sai để kiểm tra, nếu các biến của bạn chứa các giá trị hữu ích / đúng. Hãy làm điều đó trước và chỉ cố gắng chèn chúng vào nếu quá trình xác thực của bạn hoạt động.
Để thực hiện xác thực cho một int, bạn có thể sử dụng php-function is_numeric () hoặc is_int ().