java循环执行更新mysql语句到第三次出现无法更新的问题(此题作废)

java代码片段

Map<String, Object> params =new HashMap<>();
params.put("users", "张三,李四,王五,李六");//此为前端传入参数
String[] users = params.get("users").toString().split(",");
        for (int i = 0; i < users .length; i++) {
            params.put("old_dis_status", "0");
            params.put("new_dis_status", "1");
            params.put("user", users[i]);
            //更新
            int c = tUserMapper.upState(params);
            if (c == 0) {
                System.out.println("错误");
             }
          }

sql片段

update user_info
        set dis_status=#{map.new_dis_status},time=now()
        where user=#{map.user} and dis_status=#{map.old_dis_status}

表数据及结构
id(主键自增) | user(唯一)| time | dis_status
1 | 张三 |(NULL) | 0
2 | 李四 |(NULL) | 0
3 | 王五 |(NULL) | 0
4 | 李六 |(NULL) | 0

前两次循环都能正常返回1条受影响,到了第三次就出现更新条数为0
但是用更新条数为0的参数,重新在数据库中单独执行却能显示1条受影响
这种问题需要如何解决?

把if (i != 1)改成if(i==0)
因为有时候参数不正确,可能导致更新多条,不止一条
此外,你是如何拿到有问题的参数的,断点跟的吗,你这里不是直接拼接的sql语句,而是使用了参数化sql,按理说应该没办法直接拷贝出来执行的,需要手动改造一下,有没有一种可能,其实有参数传错了,但是你手改的时候又给改对了,所以能执行了呢
此外,仔细看你连接的到底是哪个数据库,是不是代码自动插入的和你用工具插入的不是同一个库

就你贴出来的这个代码 肯定是跑不起来的,第一句
Map<String, Object> params =new ArrayList<Map<String, Object>>(); 这儿就已经编译报错了