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

SQLSTATE [HY093]:Số tham số không hợp lệ:số biến bị ràng buộc không khớp với số mã thông báo trên dòng 102

Bạn đã không ràng buộc tất cả các ràng buộc của mình ở đây

$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate     FROM comments WHERE articleid = :art 
ORDER BY " . mysqli_escape_string($order) . " LIMIT :numRows";

$st = $conn->prepare( $sql );
$st->bindValue( ":art", $art, PDO::PARAM_INT );

Bạn đã khai báo một ràng buộc được gọi là:numRows nhưng bạn chưa bao giờ thực sự ràng buộc bất cứ thứ gì với nó.

CẬP NHẬT 2019:Tôi tiếp tục nhận được sự tán thành về điều này và điều đó nhắc tôi về một đề xuất khác

Dấu ngoặc kép là phép nội suy chuỗi trong PHP, vì vậy nếu bạn định sử dụng các biến trong chuỗi dấu ngoặc kép, thì việc sử dụng toán tử concat là vô nghĩa. Mặt khác, dấu ngoặc kép không phải là nội suy chuỗi, vì vậy nếu bạn chỉ có một biến giống như một biến ở cuối chuỗi thì nó có thể có ý nghĩa hoặc chỉ sử dụng nó cho cả chuỗi.

Trên thực tế, có một micro op có sẵn ở đây vì trình thông dịch không quan tâm đến việc phân tích chuỗi cho các biến. Sự gia tăng gần như không được chú ý và hoàn toàn có thể bị bỏ qua ở quy mô nhỏ. Tuy nhiên, trong một ứng dụng rất lớn, đặc biệt là các nguyên khối cũ tốt, có thể có sự gia tăng hiệu suất đáng chú ý nếu các chuỗi được sử dụng như thế này. (và IMO, dù sao thì nó cũng dễ đọc hơn)




  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 để truy cập kết nối mysqli trong một lớp khác trên trang khác?

  2. tính toán sự khác biệt giữa hai hàng trong SQL

  3. Làm cách nào để biết bảng MySQL được cập nhật lần cuối khi nào?

  4. Nối một chuỗi và một số trong MySQL

  5. TẠO BẢNG NHƯ A1 thành A2