Bạn đang sử dụng một câu lệnh Oracle với các tham số ràng buộc. Điều đó tốt vì nó ngăn chặn việc tiêm SQL nơi mã nguy hiểm được chèn vào câu lệnh SQL của bạn. Tuy nhiên, trong trường hợp này, nó ngăn TO_CHAR
chức năng đang được thực thi. Thay vào đó, nó cố gắng chuyển toàn bộ chuỗi thành một dấu thời gian, tất nhiên là không hoạt động.
Giải pháp khá đơn giản:chuyển đến TO_CHAR
hàm cách xa tham số bị ràng buộc trực tiếp vào câu lệnh:
$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'))";