We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

How to use mysql_num_rows to check if username has been used?

Medium Priority
702 Views
Last Modified: 2012-05-07
I think I'm missing something simple on the code below, but I can't find the problem.  This is for a registration form and I'm just trying to query the table (users) and see if the username has already been used.  If the username has already been taken then tell the user, if the username hasn't been taken register the user.  What am I missing here?
// check the username and make sure it hasn't been taken
$result = mysql_query ("SELECT username from users WHERE username = '$new_user_name'");
$num_rows = mysql_num_rows($result);
 
if ($num_rows = '1') {
	echo "That username is already in use, please select another username! <a href='add_user.php'>Try Again</a>";
}
if ($num_rows = '0') {
		 mysql_query ("INSERT INTO users (first_name, last_name, username, password, email, state_id, state)
		 VALUES ('$first_name', '$last_name', '$user_name', '$encrypted_password', '$email', '$state_id', '$state_name')");	
         echo 'Good news, the user was added!';
      }

Open in new window

Comment
Watch Question

Commented:
Is it doing anything?

try:
// check the username and make sure it hasn't been taken
$result = mysql_query ("SELECT username from users WHERE username = '$new_user_name'");
 
if($result) {
	if(mysql_num_rows($result) > 0) {
		echo "That username is already in use, please select another username! <a href='add_user.php'>Try Again</a>";
	} else {
		// Insert...
		mysql_query ("INSERT INTO users (first_name, last_name, username, password, email, state_id, state)
                 VALUES ('$first_name', '$last_name', '$user_name', '$encrypted_password', '$email', '$state_id', '$state_name')");     
		echo 'Good news, the user was added!';
	}
} else {
	echo "Sorry problem with query:".mysql_error();
}

Open in new window

Unlock this solution with a free trial preview.
(No credit card required)
Get Preview

Commented:
yes... that is correct also... should have spotted that in original code :)

General practice of using if(mysql_num_rows($result) > 0) is 'safer' incase for any reason there is more than one.
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a free trial preview!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.