パラメータがバインドされた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'))";