Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

सामान्य त्रुटि:1008 OCIStmtExecute:ORA-01008:सभी चर बाध्य नहीं हैं

कोशिश करें

<?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());
}

?>

मुख्य बात क्वेरी() का उपयोग नहीं कर रही है क्योंकि आप पहले से ही तैयार() और निष्पादित() को कॉल कर चुके हैं। यह क्वेरी () थी जो ORA-1008 दे रही थी क्योंकि इसमें बाइंड वेरिएबल्स के लिए मान नहीं थे।

एक और बात Oracle बाइंड वैरिएबल के साथ ऐडलैश आदि का उपयोग नहीं करना है। बाइंड डेटा हमेशा कोड से अलग होता है और इसे उपयोगकर्ता द्वारा सबमिट किए जाने के रूप में छोड़ दिया जाना चाहिए।

यह भी ध्यान दें कि मैंने bindParam का उपयोग किया है ।

doc में PDO और PDO_OCI उदाहरण और परीक्षण देखें। और GitHub पर . कुछ सामान्य अवधारणाएं हैं जो भूमिगत PHP और Oracle मैनुअल

अंत में, OCI8 एक्सटेंशन का उपयोग करें, PDO_OCI का नहीं। OCI8 बेहतर है और इसमें अधिक सुविधाएं हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Microsoft Windows 2008 सर्वर 64bit पर Oracle 10 ODP.NET स्थापित करना

  2. COALESCE () Oracle में फ़ंक्शन

  3. XMLTYPE कॉलम में चाइल्ड नोड सम्मिलित करना

  4. Oracle SQL ट्रिगर पर परिवर्तन तालिका

  5. डेटाबेस में ऐतिहासिक लुकअप मानों को सर्वोत्तम तरीके से कैसे प्रबंधित करें?