Vous utilisez une instruction Oracle avec des paramètres liés. C'est bien car cela empêche les injections SQL où du code dangereux est inséré dans votre instruction SQL. Cependant, dans ce cas, cela empêche le TO_CHAR
fonction d'être exécutée. Au lieu de cela, il essaie de convertir la chaîne entière en un horodatage, ce qui bien sûr ne fonctionne pas.
La solution est plutôt simple :passez à TO_CHAR
fonction loin du paramètre lié directement dans l'instruction :
$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'))";