sql >> Databáze >  >> RDS >> Oracle

oci_bind_by_name a to_date PHP/OCI/Oracle

Používáte příkaz Oracle s vázanými parametry. To je dobré, protože to zabraňuje injekcím SQL, kde je do vašeho příkazu SQL vložen nebezpečný kód. V tomto případě však zabrání TO_CHAR funkce od provedení. Místo toho se snaží převést celý řetězec na časové razítko, což samozřejmě nefunguje.

Řešení je poměrně přímočaré:přejděte na TO_CHAR funkce mimo vázaný parametr přímo do příkazu:

$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. nastavit prázdné heslo pro uživatele PostgreSQL

  2. Jak rozdělit sloupec varchar jako více hodnot v SQL?

  3. Fulltextové vyhledávání v MySQL:Hodný, zlý a ošklivý

  4. pgDash Alternatives - PostgreSQL Database Monitoring s ClusterControl