在这种情况下,有一个表单用于更新用户信息(用户名、密码、手机号等)。
下面是我用来检查数据库中是否存在用户名的代码:
string sql = "SELECT username FROM (SELECT username FROM useraccount WHERE username != @old_uname)ua WHERE BINARY username = @new_uname LIMIT 1;";
MySqlCommand cmd = new MySqlCommand(sql, SecurityMod.dbconn());
cmd.Parameters.AddWithValue("@old_uname", old_uname);
cmd.Parameters.AddWithValue("@new_uname", new_uname);
if (cmd.ExecuteScalar() == null)
{
isValidNewUname = true;
}
如果用户真的更改了用户名,它就会起作用。但当用户对用户名字段以外的任何内容进行更改时,就会出现问题。isvalidnewuname变量仍为false。任何想法和建议都会大有帮助。
1条答案
按热度按时间mspsb9vt1#
我没有基于获取的用户名,而是选择了uid。我用以下代码解决了这个问题:
此代码较短且更简单,因此更易于维护。这里发生的是查询在数据库中查找@new\u uname的uid。然后将获取的uid与当前用户的uid进行比较。如果相同,则意味着查询的获取结果只是用户本身,因此它们是否相同并不重要,因为它们只属于一个用户。如果获取的uid不等于当前用户的uid,则表示用户输入的用户名已被获取,因此isvalidnewuname将为false。如果上面的查询没有返回结果,那么@new\u uname是可用的,因为它在数据库中没有记录。