Oracle
 sql >> Baza danych >  >> RDS >> Oracle

oci_bind_by_name i do_date PHP/OCI/Oracle

Używasz instrukcji Oracle z powiązanymi parametrami. To dobrze, ponieważ zapobiega wstrzykiwaniu SQL, gdy niebezpieczny kod jest wstawiany do instrukcji SQL. Jednak w tym przypadku zapobiega TO_CHAR funkcja przed wykonaniem. Zamiast tego próbuje przekonwertować cały ciąg na znacznik czasu, co oczywiście nie działa.

Rozwiązanie jest raczej proste:przejdź do TO_CHAR funkcja z dala od powiązanego parametru bezpośrednio do instrukcji:

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dowiedz się, jak wykonać procedurę w Toad For Oracle

  2. Spór o sekwencję RAC

  3. Dziesięć najważniejszych powodów, dla których warto przejść z Oracle na PostgreSQL

  4. szybsze zapytanie stronicowania Oracle

  5. Obsługa współbieżnych aktualizacji w trybie hibernacji