sql >> データベース >  >> RDS >> Oracle

oci_bind_by_nameおよびto_datePHP/ OCI / Oracle

    パラメータがバインドされたOracleステートメントを使用しています。危険なコードがSQLステートメントに挿入されるSQLインジェクションを防ぐので、これは良いことです。ただし、この場合、TO_CHARは防止されます。 関数が実行されないようにします。代わりに、文字列全体をタイムスタンプに変換しようとしますが、これはもちろん機能しません。

    解決策はかなり単純です。TO_CHARに移動します バインドされたパラメータから離れてステートメントに直接機能します:

    $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. AWSRDSで一般ログとエラーログを有効にする方法

    2. 整数をチェックするSQLLIKE条件?

    3. Java JDBC:一貫して2日間の休日

    4. Postgresqlは列タイプをintからUUIDに変更します