sql >> Database teknologi >  >> RDS >> Oracle

oci_bind_by_name og to_date PHP/OCI/Oracle

Du bruger en Oracle-sætning med bundne parametre. Det er godt, fordi det forhindrer SQL-injektioner, hvor farlig kode indsættes i din SQL-sætning. Men i dette tilfælde forhindrer det TO_CHAR funktion fra at blive udført. I stedet forsøger den at konvertere hele strengen til et tidsstempel, hvilket selvfølgelig ikke virker.

Løsningen er ret ligetil:flyt til TO_CHAR funktion væk fra den bundne parameter direkte ind i sætningen:

$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. pt-query-digest-alternativer - MySQL-forespørgselsstyring og -overvågning med ClusterControl

  2. Sådan konverteres en streng til et tidsstempel i PostgreSQL

  3. Fejl ved brug undtagen i en forespørgsel

  4. Overvejelser om ydeevne for Azure SQL Managed Instance