sql >> Databasteknik >  >> RDS >> Oracle

oci_bind_by_name och to_date PHP/OCI/Oracle

Du använder en Oracle-sats med bundna parametrar. Det är bra eftersom det förhindrar SQL-injektioner där farlig kod infogas i din SQL-sats. Men i det här fallet förhindrar den TO_CHAR funktion från att exekveras. Istället försöker den konvertera hela strängen till en tidsstämpel, vilket naturligtvis inte fungerar.

Lösningen är ganska enkel:flytta till TO_CHAR funktion bort från den bundna parametern direkt in i satsen:

$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. Hur man optimerar användningen av ELLER-satsen när den används med parametrar (SQL Server 2008)

  2. Operatörer för att extrahera JSON-delkomponenter

  3. MySQL - Använder COUNT(*) i WHERE-satsen

  4. Zombie PerfMon-räknare som aldrig dör!