我试图确保在输入记录到数据库时不能重复用户名..我得到这个错误"mysql_num_rows()期望参数1是资源,布尔值在C:'xampp'htdocs'Syokimaufc'register.php "我的用户id字段已自动递增,这似乎是问题。我该如何解决这个问题?
<?php
if(!empty($_POST['username']) && !empty($_POST['password']))
{
$username = mysql_real_escape_string($_POST['username']);
$password = md5(mysql_real_escape_string($_POST['password']));
$email = mysql_real_escape_string($_POST['email']);
$tel = mysql_real_escape_string($_POST['tel']);
$address = mysql_real_escape_string($_POST['address']);
$checkusername = mysql_query("SELECT * FROM membership WHERE Username = '".$username."'");
if(mysql_num_rows($checkusername) == 1)
{
echo "<h1>Error</h1>";
echo "<p>Sorry, that username is taken. Please go back and try again.</p>";
}
else
{
$registerquery
= mysql_query("INSERT INTO membership (username, password, email, tel, address)
VALUES('".$username."', '".$password."', '".$email."','".$tel."','".$address."')");
if($registerquery)
{
echo "<h1>Success</h1>";
echo "<p>Your account was successfully created. Please <a href='"index.php'">click here to login</a>.</p>";
}
else
{
echo "<h1>Error</h1>";
echo "<p>Sorry, your registration failed. Please go back and try again.</p>";
}
}
}
else
{
?>
要避免重复用户名,只需在数据库中的用户名列上创建唯一索引。然后,如果尝试插入重复的用户名,则插入查询将失败,您可以对失败做出反应。在插入新用户名之前不需要在数据库中查找用户名。
不要用mysql_*
函数,用PDO代替。并将PDO::ATTR_ERRMODE
设置为PDO::ERRMODE_EXCEPTION
,因此当检测到重复用户名时,您将获得一个很好的异常。
在你的select查询Username应该是Username。所以你的查询应该是SELECT * FROM membership WHERE username = '".$username."'"。你应该使用mysqli,因为mysql函数不再被支持