会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132846个问题
Python 全系列/第一阶段:Python入门/Python入门(动画版) 32177楼

<?php
    //获取用户从前端发来的数据
    $username = $_POST['username'];
    $password = $_POST['password'];
    $success = array("msg"=>"ok");

    $con = mysqli_connect("localhost","root","","lmp");
    if($con){
        mysqli_query($con,"set names utf8");
        mysqli_query($con,"set character_set_client utf8");
        mysqli_query($con,"set character_set_results utf8");
        $sql = "select * from loginuserinfo where 1";
        $result = $con->query($sql);
        if($result->num_rows>0){
            $info = [];
            for ($i=0;$row=$result->fetch_assoc(); $i++) {
                $info[$i] = $row;
            }
            $flag = false; //标识符,默认登陆失败
            for ($j=0; $j < count($info); $j++) {
                if($info[$j]['username'] == $username){
                    if($info[$j]['password'] == $password){
                        $success['infoCode']=0;
                        $flag = true;
                        break;
                    }
                }
            }

            if(!$flag){
                $success['infoCode']=1;
            }
        }else{
            $success['infoCode']=3;
        }

    }else{
        $success['infoCode']=2;  //0:成功  1:失败   2:数据库连接失败   3:数据库为空
    }
    echo json_encode($success);





?>

这两行代码有问题,注释掉就好了,这是怎么回事?

WEB前端全系列/第六阶段:音乐社区高级项目模块/移动端:基于jQuery使用Ajax和BootStrap 32179楼
JAVA 全系列/第六阶段:项目管理与SSM框架/Spring旧 32182楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 32183楼
Python 全系列/第十三阶段:高并发性能怪兽-Tornado 框架/Tornado 异步(旧) 32185楼

e493e4a83feea184410970cc3bcd1cd.png

flask_shop.zip

vue_shop.zip

一直login爆红


Python 全系列/第九阶段:Flask百战电商后台系统/Flask百战电商后台项目 32186楼

image.png

springbootmybatis.zip

老师,<link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>

还有6b3c2569b2c122c703185c9bef23dda.png也导入了,做spring和JDBC结合无问题,我将源码复制进去还是报这个错,idea用的2019.3版本的

JAVA 全系列/第九阶段:Spring Boot实战/Spring Boot 32187楼

视频中老师的分页,开始

begin指的是开始读取的行数,从0开始

 end是读取到哪里的行数,不包括end

比如显示第2页的数据,每页2行。

int begin = (currentPage - 1) * pageRows; 

int end = currentPage * pageRows;


计算出begin=2  end=4


进行while循环的时候

image.png


currentNum指的是当前打印的行数。注意是从0开始的。那么对应输出第一行记录的时候,currentNum=0,输出完第一行记录的内容以后,currentNum++,才为1,也就是第二行记录在输出时的currentNum=1

由此可见,这种写法,由于一开始就把currentNum的值设置为0,并且在输出完第一行记录的内容后才加1

所以数据库当中的记录被我们用currentNum标识成了从0开始。

那么当我们比如显示第2页的数据,每页2行的时候,上面计算出计算出begin=2  end=4

进入while循环的时候,进行if判断,显然,第一次currentNum的值为0 0>=2 不成立,所以并没有执行if块,直接让currentNum++变成1,也就是说第一条记录(被我们标识成currentNum=0的记录)被略过没有打印。

再次进入循环,进行if判断,显然,第二次currentNum的值为1 1>=2 不成立,所以并没有执行if块,直接让currentNum++变成2,也就是说第二条记录(被我们标识成currentNum=1的记录)被略过没有打印。

再次进入循环,进行if判断,显然,第三次currentNum的值为2 2>=2 成立,执行if块,打印第三条记录(被我们标识成currentNum=2的记录)的内容,判断if条件,2==(4-1=3) 不成立,不执行break,继续向下,执行currentNum++变成3.

再次进入循环,进行if判断,显然,第四次currentNum的值为3 3>=2 成立,执行if块,打印第四条记录(被我们标识成currentNum=3的记录)的内容,判断if条件,3==(4-1=3) 成立,执行break,跳出整个while循环。

也就是说,最终打印了,

结果集中的第三条记录(被我们标识成currentNum=2的记录)的内容

结果集中的第四条记录(被我们标识成currentNum=3的记录)的内容

因为我们对结果集当中的记录进行的currentNum标识本来就是从0开始的。

再来看if的判断

 currentNum>=begin && currentNum<end

为什么没有在end那边加等号呢,

看上面的例子,打印第2页的内容,每行打印2条。

begin=2

end=4

打印数据currentNum=2,currentNum=3

发现规律了吗,实际上就是从begin的值(2)开始往下数,数2个(因为每页显示2个。

那么end是什么,end其实就是我们计算出来的,读到哪里的个数,当然我们也可以将end的值直接-1,求出来到底到哪里结束,

这样更好理解:

image.png


或者你觉得,从0开始太难受,为什么不都从1开始,也可以这样:

image.png


结果都没有问题,显示了结果集里,第三条与第四条的数据:

image.png

JAVA 全系列/第三阶段:数据库编程/JDBC技术(旧) 32189楼
Python 全系列/第九阶段:Flask百战电商后台系统/Flask百战电商后台项目 32190楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637