我这段php代码有什么问题?我找不出来

这是我的php代码,用于用户注册,如果用户不存在,那么插入用户名和密码,如果用户存在,返回'verify' => 'exists',但是在实际运行过程中,先清空数据库,然后发送请求,echo(mysqli_num_rows($result) );输出1,PHP既返回了'verify' => 'exists',又向数据库插入了数据,这是为什么?
如果我把 条件if($a == 0)改为 if($a == 1),清空数据库,然后发送请求,那么输出的结果还是{"verify":"exists"},但是echo(mysqli_num_rows($result) );竟然输出0 这俩种写法都是输出{"verify":"exists"},但是还向数据库插入了数据,但是输出的内容并没有输出echo('$a == 0');echo('$a == 1');而是直接执行了$result1 = $conn->query($sql1);奇了怪了

if ($type == "sign") {
    $sql = "SELECT userid FROM user WHERE userid = '{$userid}'";
    $result = $conn->query($sql);
    print_r($result);
    echo(mysqli_num_rows($result) ); //在数据库清空的情况下,如果条件为$a == 0,这里输出1,如果条件为$a == 1,这里竟然输出0,我擦
    $a = mysqli_num_rows($result);
    if ($a == 0) {
        echo('$a == 0');
        $sql1 = "INSERT INTO user (userid,password) VALUES ('{$userid}','{$uesrpassword}')";
        $result1 = $conn->query($sql1);
        $token = $token_management->get_token($userid);
        $res = array(
          'verify' => 'ok',
          'token' => $token
        );
        echo json_encode($res, JSON_UNESCAPED_UNICODE);
        
    } else {
        echo('$a != 0');
        $res = array(
            'verify' => 'exists',
          );
            echo json_encode($res, JSON_UNESCAPED_UNICODE);
    }
}

img

if ($type == "sign") {
    $sql = "SELECT userid FROM user WHERE userid = '{$userid}'";
    $result = $conn->query($sql);
    print_r($result);
    echo(mysqli_num_rows($result) );
    $a = mysqli_num_rows($result);
    if ($a == 1) {
        echo('$a == 1');
        $sql1 = "INSERT INTO user (userid,password) VALUES ('{$userid}','{$uesrpassword}')";
        $result1 = $conn->query($sql1);
        $token = $token_management->get_token($userid);
        $res = array(
          'verify' => 'ok',
          'token' => $token
        );
        echo json_encode($res, JSON_UNESCAPED_UNICODE);
        
    } else {
        echo('$a != 1');
        $res = array(
            'verify' => 'exists',
          );
            echo json_encode($res, JSON_UNESCAPED_UNICODE);
    }
}

img

第一,你这思路看着貌似有点问题,用户注册:无非是判断此用户注册的用户名是否存在?如果存在直接返回假,不存在直接进行注册!
方案如下:
获取用户注册提交的注册用户名服务器得到进行判断,参考代码如下(写法各有不同,代码仅供参考!)下面利用你的代码进行修改如下:

if ($type == "sign") {
    $sql = "SELECT userid FROM user WHERE userid = '$userName'";//查询数据库语句
    $result = $conn->query($sql);//开始查询
  while ($arr = $rst->fetch_assoc())//循环取出查询结果
    {
        if($uname==$arr['userName'])//判断数据库用户名字段是否存在现在注册用户的注册用户名
        {
            return 0;//用户名已经存在会执行这里     直接返回 0;具体看你个人喜好
        }
    }
//如果代码执行到这里了  说明数据库用户名字段并没有这个用户名,说明可以注册

//直接进行你的插入数据库操作即可 ,如有疑问请继续!

这就有点奇怪了,逻辑看着没什么问题,要不这样
你先把插入数据库的语句注释了,如果$a为0就返回0,如果是1,就返回1,看看你的数据还有数据库是什么样子的

换了php版本还是有问题

echo json_encode($res, JSON_UNESCAPED_UNICODE);
改成
return json_encode($res, JSON_UNESCAPED_UNICODE);