使用运算符在 while 循环中加 1

Using operator to add 1 in while loop

我的语句输出有问题。我正在尝试将 1 添加到 dB 中的每个用户名实例。我有以下代码:

$username = strtolower($fname . "_" . $lname);

$check_username_query = mysqli_prepare($con, "SELECT username FROM users WHERE username=?");
$check_username_query->bind_param('s', $username);
$check_username_query->execute();

$result = $check_username_query->get_result();
$num_rows = $result->num_rows;  //count number of rows in the result

$i = 0;

//if username exists add number to username
while ($num_rows != 0) {

    $i++; //Add 1 to i
    $username = $username . "_" . $i;

    $check_username_query = mysqli_prepare($con, "SELECT username FROM users WHERE username=?");
    $check_username_query->bind_param('s', $username);
    $check_username_query->execute();

    $result = $check_username_query->get_result();
    $num_rows = $result->num_rows;
}

这对前两个工作正常:例如。 $fname 是约翰,$lname 是史密斯。我得到 $username 作为 john_smith。对于下一个,我得到 john_smith_1 但是,对于下一个,我得到 john_smith_1_2,在我得到 john_smith_1_2_3 之后的一个,依此类推。我想要的第三个实例(及以后)是 john_smith_3john_smith_4

$username = $username . "_" . $i;中的$i不应该继续递增吗?

使用这段代码:

$username = strtolower($fname . "_" . $lname);

$check_username_query = mysqli_prepare($con, "SELECT username FROM users WHERE username=?");
$check_username_query->bind_param('s', $username);
$check_username_query->execute();

$result = $check_username_query->get_result();
$num_rows = $result->num_rows;  //count number of rows in the result

$i = 0;

//if username exists add number to username
while ($num_rows != 0) {

    $i++; //Add 1 to i
    $new_username = $username . "_" . $i;

    $check_username_query = mysqli_prepare($con, "SELECT username FROM users WHERE username=?");
    $check_username_query->bind_param('s', $new_username );
    $check_username_query->execute();

    $result = $check_username_query->get_result();
    $num_rows = $result->num_rows;
}

我最终这样做了:

$username = strtolower($fname . "_" . $lname);

$check_username_query = mysqli_prepare($con, "SELECT username FROM users WHERE username=?");
$check_username_query->bind_param('s', $username);
$check_username_query->execute();

$result = $check_username_query->get_result();
$num_rows = $result->num_rows;  //count number of rows in the result

$new_username = 1;

$i = 0;
//if username exists add number to username
while ($num_rows != 0) {

    $i++; //Add 1 to i
    $new_username = $username . "_" . $i;

    $check_username_query = mysqli_prepare($con, "SELECT username FROM users WHERE username=?");
    $check_username_query->bind_param('s', $new_username);
    $check_username_query->execute();

    $result = $check_username_query->get_result();
    $num_rows = $result->num_rows;

}

    if($new_username == 1){
      $username = $username;
    } else {
      $username = $new_username;
    }

需要将 $new_username 分配为..某物(我选择了 1),然后如果 $num_rows == 0while 循环未参与,则将其置于条件句末尾。根据需要工作。感谢您的指导。