mysql_numrows error<

admin

Administrator
Staff member
Okay I have this little problem with a script i am working on... it is a logon script and regester script... I seem to be having a problem with the register side of the house any way here is my code


database.php

<?

/**
* Connect to the mysql database.
*/
error_reporting(E_ALL^E_NOTICE);

$conn = mysql_connect ("localhost", "seangra_users", "******") or die (mysql_error());
mysql_select_db("seangra_users", $conn) or die (mysql_error());

?>


and register.php

<?
session_start();
include("database.php");

/**
* Returns true if the username has been taken
* by another user, false otherwise.
*/
function usernameTaken($username){
global $conn;
if(!get_magic_quotes_gpc()){
$username = addslashes($username);
}
$q = "select username from seangra_users where username = '$username'";
$result = mysql_query($q,$conn);
return (mysql_numrows($result) > 0);
}

/**
* Inserts the given (username, password) pair
* into the database. Returns true on success,
* false otherwise.
*/
$email = $_POST['email'];
$ip = $_POST['ip'];
function addNewUser($username, $password){
global $conn;
$q = "INSERT INTO seangra_users VALUES ('$username', '$password', '$email', '$ip')";
return mysql_query($q,$conn);
}

/**
* Displays the appropriate message to the user
* after the registration attempt. It displays a
* success or failure status depending on a
* session variable set during registration.
*/
function displayStatus(){
$uname = $_SESSION['reguname'];
if($_SESSION['regresult']){
?>

<h1>Registered!</h1>
<p>Thank you <b><? echo $uname; ?></b>, your information has been added to the database, you may now <a href=http://www.htmlforums.com/archive/index.php/"index.php" title="Login">log in</a>.</p>

<?
}
else{
?>

<h1>Registration Failed</h1>
<p>We're sorry, but an error has occurred and your registration for the username <b><? echo $uname; ?></b>, could not be completed.<br>
Please try again at a later time.</p>

<?
}
unset($_SESSION['reguname']);
unset($_SESSION['registered']);
unset($_SESSION['regresult']);
}

if(isset($_SESSION['registered'])){
/**
* This is the page that will be displayed after the
* registration has been attempted.
*/
?>

<html>
<title>Registration Page</title>
<body>

<? displayStatus(); ?>

</body>
</html>

<?
return;
}

/**
* Determines whether or not to show to sign-up form
* based on whether the form has been submitted, if it
* has, check the database for consistency and create
* the new account.
*/
if(isset($_POST['subjoin'])){
/* Make sure all fields were entered */
if(!$_POST['user'] || !$_POST['pass']){
die('You didn\'t fill in a required field.');
}
if(!$_POST['email']){
die('You didn\'t fill in the email field, silly');
}
/* Spruce up username, check length */
$_POST['user'] = trim($_POST['user']);
if(strlen($_POST['user']) > 30){
die("Sorry, the username is longer than 30 characters, please shorten it.");
}

/* Check if username is already in use */
if(usernameTaken($_POST['user'])){
$use = $_POST['user'];
die("Sorry, the username: <strong>$use</strong> is already taken, please pick another one.");
}

/* Add the new account to the database */
$md5pass = md5($_POST['pass']);
$_SESSION['reguname'] = $_POST['user'];
$_SESSION['regresult'] = addNewUser($_POST['user'], $md5pass);
$_SESSION['registered'] = true;
echo "<meta http-equiv=\"Refresh\" content=\"0;url=$HTTP_SERVER_VARS[PHP_SELF]\">";
return;
}
else{
/**
* This is the page with the sign-up form, the names
* of the input fields are important and should not
* be changed.
*/
?>

<html>
<title>Registration Page</title>
<body>
<h1>Register</h1>
<form action="<? echo $HTTP_SERVER_VARS['PHP_SELF']; ?>" method="post">
<table align="left" border="0" cellspacing="0" cellpadding="3">
<tr><td>Username:</td><td><input type="text" name="user" maxlength="30"></td></tr>
<tr><td>Password:</td><td><input type="password" name="pass" maxlength="30"></td></tr>
<tr><td>E-mail Address:</td><td><input type="text" name="email" maxlength="30"></td></tr>
<tr><td colspan="2" align="right"><input type="submit" name="subjoin" value="Join!"></td></tr>
</table>
</form>
</body>
</html>


<?
}
?>


the error i get is

Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home/seangra/public_html/webdesign/register.php on line 16


any help would be greatly appreciatedmysql_num_rows()now the error says


Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/seangra/public_html/webdesign/register.php on line 16Well that's weird, try this for your function

function usernameTaken($username){
global $conn;
if(!get_magic_quotes_gpc()){
$username = addslashes($username);
}
$q = "select username from seangra_users where username = '$username'";
$result = mysql_query($q,$conn);
if(mysql_num_rows($result) > 0){
return TRUE;
} else {
return FALSE;
}
}hmm still returning the same error...ah, try making this line

$result = mysql_query($q,$conn);

this

$result = mysql_query($q,$conn) or die(mysql_error());
that should helpwell i have to be pretty dumb because i had it set to use the tabe seangra_users when it was only called users... well i spose it happens... Thanks for your help joshheh, no problem, has happened to me before.

You should always add or die(mysql_error());
to the end of the mysql_query line. That would have told you that there was no table with that name.also for future reference you should use mysql_num_rows() as mysql_numrows() is deprecated
 
Back
Top