我在输入用户的地方有以下代码,但我想验证username
我分配给用户的代码是否已经存在,如果存在,请在username
示例中添加一个数字:JPerez、JPerez1、JPerez2。
// Separamos los Nombres
list($pri_nombre, $seg_nombre) = explode(" ", $nombre);
// Separamos los Apellidos
list($pri_apellido, $seg_apellido) = explode(" ", $apellido);
// QUITAMOS LOS ESPACIOS EN BLANCO, EJEMPLO DE APELLIDO: DEL CAMPO
$pri_nombre = preg_replace('/[ <>\'\"]/', '', $pri_nombre);
$seg_nombre = preg_replace('/[ <>\'\"]/', '', $seg_nombre);
$pri_apellido = preg_replace('/[ <>\'\"]/', '', $pri_apellido);
$seg_apellido = preg_replace('/[ <>\'\"]/', '', $seg_apellido);
// Ticket de Condicion
$username_encontrado = FALSE;
$largo_nombre = strlen($pri_nombre); //largo del nombre
$j = 1; //INDICA LA CANTIDAD DE CARACTERES A EXTRAER DEL NOMBRE
$username = cortar_string(substr($pri_nombre, 0, $j) . $pri_apellido, 12);
while (!$username_encontrado) {
$ver_username = "SELECT Codigo FROM personal where NomUser = '$username'";
$resultt = mysqli_query($conn, $ver_username);
$resultCheck = mysqli_num_rows($resultt);
if ($resultCheck > 0) {
$username_encontrado = FALSE;
// Aqui agregar el username se repite
} else {
$username_encontrado = TRUE;
}
}
如果我找到一个喜欢的代码将如何修改$username
它
我建议您创建一个变量 $i ,其中包含您将用作名称中后缀的数字序列,每次评估 if 并且用户已经存在时,此变量都会增加 1,它与最初在那里的用户的名称并再次进行查询,依此类推,直到找到可用的 JPerez.$i 用户:
该选项对您有用,但是对我来说似乎效率低下,考虑到您必须对数据库进行的所有查询,例如,如果在数据库中有来自 JPerez、JPerez1...直到 Jperez10,那么当您去仅对查询 #12 进行排序将获得可用的用户名。因此,作为第二种选择,我建议这样做(尽管它使用 PDO 而不是 mysqli):
此选项的优点是它可以防止 SQL 注入,当您使用 mysqli_query 将变量直接插入 SQL 时要小心,其次,它不会重复查询,直到您获得有效用户。基本上,它会执行第一个查询来检查用户是否存在。如果存在,它会进行第二次查询,提取以该用户名开头的所有用户(因此它会获取所有分配的后缀)。它将所有忙碌的用户存储在一个数组中,用作比较新计算的用户是否可用的参考。
此外,变量 $i 不是从零开始,而是从被该名称占用的用户名数量后面的数字开始,因此我们不必从头开始遍历所有内容,尽管这并不能保证只有一个迭代,但如果减少它们,JPerez6 可能存在,但计数结果优于 6,因为 JPerez5 已被删除。希望可以理解:
我希望它对你有用,请继续关注。