0

次のコードがあります。

conditions.add("mydate = str_to_date('"+date_from_user+"', '%Y-%m-%d')");

上記は正常に機能しますが、ユーザーからの入力を取得してクエリに押し込んでいるため、クエリのセキュリティが危険にさらされています。名前付きテンプレートを使用したかったので、コードを次のように変更しました。

conditions.add("mydate = str_to_date(':mydate', '%Y-%m-%d')");
namedParams.put("mydate", date_from_user);

ただし、上記のコードは機能せず、次のエラー メッセージが表示されます。

<SQLWarning ignored: SQL state 'HY000', error code '1411', message [Incorrect datetime value: ':mydate' for function str_to_date]>

そのため、namedparameter が値を取得していないようです。

4

2 に答える 2

0

引用符を削除して':mydate'、以下のように変更してみましたか?

conditions.add("mydate = str_to_date(:mydate, '%Y-%m-%d')");
namedParams.put("mydate", date_from_user);
于 2012-12-12T05:06:53.513 に答える
0

最初にDBサーバーの日付形式を確認してください。次に、同じ形式で入力します。同じオブジェクトで日付オブジェクトを作成するか、同じ形式で文字列を渡します。

于 2012-12-12T05:38:31.000 に答える