我有以下代码:
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没有拿起值..
答案 0 :(得分:0)
您是否尝试删除':mydate'
中的引号并将其更改为
conditions.add("mydate = str_to_date(:mydate, '%Y-%m-%d')");
namedParams.put("mydate", date_from_user);
答案 1 :(得分:0)
首先检查您的数据库服务器日期格式。然后以相同的格式输入。在相同的Object中创建日期对象或以相同的格式传递字符串。