Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Không có dữ liệu nào được cung cấp cho các tham số trong câu lệnh đã chuẩn bị

Bạn chỉ bị ràng buộc bốn đối số, bởi chuỗi điều khiển "sssd", nhưng bạn có nhiều tham số. Khi liên kết các biến với mysqli, bạn cần một ký tự cho mỗi tham số, ví dụ:

mysqli_stmt_bind_param($stmt, "sssdsssssssssdd", $firstname, $surname, $address, 
    $gender, $city, $province, $postalcode, $phone, $secondphone, $email, 
    $organization, $inriding, $ethnicity, $senior, $student);

(Tôi giả sử học sinh cuối cấp và học sinh là số nguyên và cần mã "d".)

Bạn không cần phải xử lý bất kỳ biến nào của mình bằng mysqli_real_escape_string () - đó là điểm của việc sử dụng các tham số. Nếu bạn cũng thoát, bạn sẽ nhận được các ký tự gạch chéo ngược theo nghĩa đen trong dữ liệu của mình trong cơ sở dữ liệu.

Và bạn không bao giờ cần sử dụng htmlspecialchars () trong mọi trường hợp - bạn sẽ sử dụng nó khi xuất ra HTML, không phải khi chèn vào cơ sở dữ liệu. Bạn sẽ nhận được các chuỗi theo nghĩa đen như & trong dữ liệu của bạn trong cơ sở dữ liệu.

Lại lỗi tiếp theo của bạn:

Điều này được gây ra bởi những điều sau:

$result = mysqli_query($mysqli,$stmt);

Hàm đó mong đợi đối số thứ hai là một chuỗi, một truy vấn SQL mới. Nhưng bạn đã chuẩn bị sẵn truy vấn đó, vì vậy bạn cần những thứ sau:

$result = mysqli_stmt_execute($stmt);



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra xem giá trị có tồn tại hay không trước khi chèn vào MySQL DB trong tập lệnh PHP

  2. Tại sao các tham chiếu đến wp_postmeta quá chậm?

  3. Hiểu key_len của MySQL trong Tuyên bố Giải thích

  4. MySQL Trường hợp ngày lớn hơn một tháng?

  5. Ví dụ về DATE_ADD () - MySQL