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

Cảnh báo:PDOStatement ::execute ():SQLSTATE [HY093]:Số tham số không hợp lệ:tham số không được xác định trong ... filetext

Nếu bạn sử dụng tham số vị trí, mảng tham số bạn chuyển cho execute() phải là một mảng thứ tự. Tương tự như vậy, nếu bạn sử dụng các tham số được đặt tên, mảng phải là một mảng kết hợp.

Đây là bài kiểm tra để xác nhận hành vi:

$stmt = $db->prepare("SELECT ?, ? ,?");

$params = array( 'a', 'b', 'c' );
// OK
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

$params = array( 'A'=>'abc', 'B'=>'def', 'C'=>'ghi' );
// ERROR!
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

$stmt = $db->prepare("SELECT :A, :B, :C");

$params = array( 'a', 'b', 'c' );
// ERROR!
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

$params = array( 'A'=>'abc', 'B'=>'def', 'C'=>'ghi' );
// OK
if ($stmt->execute($params)) {
  print_r($stmt->fetchAll());
}

Lưu ý rằng trong các phiên bản PHP hiện tại, các phím mảng kết hợp không phải có tiền tố là : như @prodigitalson nhận xét. : tiền tố được sử dụng để bắt buộc trong các khóa mảng trong các phiên bản PHP cũ hơn.

Cũng cần nhắc lại rằng tôi đã gặp phải lỗi và hành vi không thể đoán trước khi tôi cố gắng kết hợp các tham số vị trí và các tham số được đặt tên trong một truy vấn duy nhất. Bạn có thể sử dụng một trong hai kiểu ở khác nhau truy vấn trong ứng dụng của bạn, nhưng đã chọn kiểu này hay kiểu khác cho một truy vấn nhất định.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để kéo dữ liệu từ cơ sở dữ liệu mysql và trực quan hóa với D3.JS?

  2. mysql_fetch_array thêm tất cả các hàng?

  3. Kết nối từ xa Mysql Ubuntu

  4. Loại dữ liệu cho URL

  5. Làm cách nào để giữ lịch sử cập nhật hồ sơ trong MySQL?