आप बाध्य पैरामीटर के साथ 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'))";