कोशिश करें
<?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 बेहतर है और इसमें अधिक सुविधाएं हैं।