gpt4 book ai didi

php - 如何检查表以查看某个字符串是否已被使用?

转载 作者:行者123 更新时间:2023-11-30 21:24:29 26 4
gpt4 key购买 nike

我正在使用此代码检查我的 userdb 表中的用户名列(用户名是主要的)以查看该字符串是否已经存在。如果它不存在,那么它将从以前的表单输入的字符串添加到我表中的用户名列中。但如果它在那里,那么它会说“(用户名)已经在使用中!”。

当我在用户名列中输入一个条目(例如“Sam”)然后在之前的表单中输入 Sam 时,这会起作用。但是,如果我在用户名列中有“Sam”,然后在之前的表单中输入全部小写的 sam,它会显示键 1 的重复条目“sam”。

我只是想让它说无论我在以前的表格中输入什么样的外壳,该字符串已经在使用中。

$result = mysql_query("SELECT username FROM userdb") or die(mysql_error()); 
$row = mysql_fetch_array( $result );
$checkuser = $row['username'];

if ( $checkuser == $username ) {
echo "<font color='red'>" .$username. "<font color='black'> is already in use!";
die(mysql_error());
} else {
mysql_query("INSERT INTO userdb (username, password) VALUES('$username', '$password' ) ") or die(mysql_error());;
echo "Data Inserted!";
}

最佳答案

你不应该这样做,因为它会导致竞争条件。如果在您的检查和插入之间,其他人将该用户名插入表中,就会发生这种情况。

正确的做法是在用户名上有一个主键并插入记录,捕获从 DBMS 返回的异常或错误代码。

如果用户名已经存在,则不会再次插入,您会发现错误。

如果它不存在,它将被插入并且你不会得到任何错误。

就您的大小写问题而言,我会在插入或检查之前将所有用户名转换为小写,或者在所有检查中插入混合大小写版本并将数据库副本和本地副本都小写。

关于php - 如何检查表以查看某个字符串是否已被使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/684345/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com