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

Lỗi chung:1008 OCIStmtExecute:ORA-01008:không phải tất cả các biến bị ràng buộc

Hãy thử

<?php

$did = 70;
$mid = 204;

try
{
    $base = new PDO('oci:dbname=localhost', 'hr', 'hr');
    $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql= "SELECT * FROM DEPARTMENTS WHERE DEPARTMENT_ID = :did AND MANAGER_ID = :mid";

    $resultado = $base->prepare($sql);
    $resultado->bindParam(":did", $did);
    $resultado->bindParam(":mid", $mid);

    $resultado->execute();

    while ($row = $resultado->fetch(PDO::FETCH_ASSOC)) {
        foreach ($row as $item) {
            echo "$item ";
        }
        echo "\n";
    }

}
catch(Exception $e)
{
    die("Error: " .$e->getMessage());
}

?>

Điều quan trọng là không sử dụng truy vấn () vì bạn đã gọi hàm chuẩn bị () &thực thi (). Đó là truy vấn () đang cung cấp ORA-1008 vì nó không có giá trị cho các biến liên kết.

Một điều khác là không sử dụng dấu gạch chéo, v.v. với các biến liên kết của Oracle. Dữ liệu liên kết luôn tách biệt với mã và phải được để lại khi người dùng gửi.

Cũng xin lưu ý rằng tôi đã sử dụng bindParam .

Xem các ví dụ và kiểm tra PDO và PDO_OCI trong doc và trên GitHub . Có một số khái niệm chung có thể hữu ích trong Hướng dẫn sử dụng PHP &Oracle ngầm .

Cuối cùng, sử dụng phần mở rộng OCI8, không phải PDO_OCI. OCI8 tốt hơn và có nhiều tính năng 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. Subr hay LIKE nhanh hơn trong Oracle?

  2. Làm thế nào để sử dụng GROUP BY trên một cột CLOB với Oracle?

  3. Cách lấy dữ liệu hai cột ở định dạng A, B trong Oracle

  4. Lỗi chèn dữ liệu của nhà phát triển SQL

  5. Hàm HEXTORAW () hoạt động như thế nào? Thuật toán là gì?