-1

Everything in my new website is working just fine, except that I can't get this piece of code to work:

$query = mysql_query("SELECT * FROM members WHERE useremail = '$useremail'");
$row = mysql_fetch_assoc($query);
$activation = $row['activation'];
if ($activation == '0') {
    die('Your account is not yet active. Please check your email!');
    exit();
}

In the database, the type is enum('0', '1') and the field name is activation.

Here is the error message I am getting:

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result

Could someone please give me a hint?

Thank you.

Shad
  • 15,134
  • 2
  • 22
  • 34
Carlos
  • 33
  • 1
  • 6

3 Answers3

0

The error message suggests that your query is invalid:

$query = mysql_query("SELECT * FROM members WHERE useremail = '$useremail'");

Are you doing any input sanitization for $usermail?

Are you sure your database contains that table and that the table contains that column.

Try doing a little debugging:

$query = "SELECT * FROM members WHERE useremail = '$useremail'";
echo $query;

and try running the content of $query directly in your database (from phpMyAdmin or something).

Luchian Grigore
  • 253,575
  • 64
  • 457
  • 625
0

Everything in my new website is working just fine

...until something goes wrong.

You have to learn how to handle errors.

run all your queries at least this way.

$query  = "SELECT * FROM members WHERE useremail = '$useremail'"
$result = mysql_query() or trigger_error(mysql_error()." ".$query);

and you always be notified of any error and it's reason

or implement any other way of error notifications, employing mysql_error() function which is the only thing in the world that can tell you where the actual problem is.

Your Common Sense
  • 156,878
  • 40
  • 214
  • 345
-1

Change your first line to:

$query = mysql_query("SELECT * FROM members WHERE useremail = '$useremail'") or die(mysql_error());

And it will spit out the mysql error that is causing the Warning =)

You should not be presuming the call to mysql_query returns a valid result; It's good practice to always test the result first, e.g.

$r=mysql_query("SELECT * YADYADA");
if($r && mysql_num_rows($r)>0){
  $row=mysql_fetch_assoc($r);
}else{
  //Uh oh, something's not right~~~ throw an exception maybe?
}
Shad
  • 15,134
  • 2
  • 22
  • 34