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

oci_bind_by_name और to_date PHP/OCI/Oracle

आप बाध्य पैरामीटर के साथ Oracle कथन का उपयोग कर रहे हैं। यह अच्छा है क्योंकि यह SQL इंजेक्शन को रोकता है जहां आपके SQL कथन में खतरनाक कोड डाला जाता है। हालांकि, इस मामले में, यह TO_CHAR . को रोकता है क्रियान्वित होने से कार्य करता है। इसके बजाय, यह पूरी स्ट्रिंग को टाइमस्टैम्प में बदलने की कोशिश करता है, जो निश्चित रूप से काम नहीं करता है।

समाधान काफी सीधा है:TO_CHAR . पर जाएं बाउंड पैरामीटर से सीधे स्टेटमेंट में कार्य करें:

$REGISTERED_TIMESTAMP = "15-08-2011 14:32:37";

$query =    "INSERT INTO ".$db_schema.".ARTIFACTS (ARTIFACT_ID, ARTIFACT_NAME, ARTIFACT_TYPE, ARTIFACT_LOCATION, ARTIFACT_DOMAIN, ARTIFACT_AUTHOR, ARTIFACT_LABEL, AUDIT_CONSTRAINTS, SECURITY_CONSTRAINTS, REGISTERED_EMAIL, REGISTERED_TIMESTAMP)
            VALUES (:bind1, :bind2, :bind3, :bind4, :bind5, :bind6, :bind7, :bind8,
               :bind9, :bind10, to_date(:bind11, 'DD-MM-YYYY HH24:MI:SS'))";



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ALTER TABLE स्टेटमेंट में 'ON DELETE CASCADE' कैसे जोड़ें?

  2. Oracle डाटाबेस परीक्षण चुनौती - स्कीमा डेटा की तुलना करें

  3. Oracle EBS में पैचिंग समय को कम करने के लिए डिस्ट्रीब्यूटेड AD का उपयोग कैसे करें

  4. विशिष्ट कॉलम नामों वाली तालिकाओं के लिए Oracle डेटाबेस खोजें?

  5. SQL चयन कथन में पैकेज स्थिरांक का उपयोग कैसे करें?