sql >> Database >  >> RDS >> Oracle

oci_bind_by_name en to_date PHP/OCI/Oracle

U gebruikt een Oracle-instructie met gebonden parameters. Dat is goed, want het voorkomt SQL-injecties waarbij gevaarlijke code in uw SQL-instructie wordt ingevoegd. In dit geval voorkomt het echter de TO_CHAR functie niet worden uitgevoerd. In plaats daarvan probeert het de hele string om te zetten in een tijdstempel, wat natuurlijk niet werkt.

De oplossing is vrij eenvoudig:ga naar TO_CHAR functie weg van de gebonden parameter direct naar de instructie:

$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. rijnummer verhogen wanneer waarde van veld verandert in Oracle

  2. Inleiding tot langzaam veranderende afmetingen (SCD)

  3. SQL LIKE-operator voor beginners

  4. Relationele versus niet-relationele databases - Deel 2