使用运算符在 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_3
, john_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 == 0
且 while
循环未参与,则将其置于条件句末尾。根据需要工作。感谢您的指导。
我的语句输出有问题。我正在尝试将 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_3
, john_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 == 0
且 while
循环未参与,则将其置于条件句末尾。根据需要工作。感谢您的指导。