Sessions and MySQL

I'm making an online app where the my client wants to save a bunch of data into a database including the actual session id then later they'll use this information for something else they're doing.

In any case, I have one part in my program that I can't seem to figure out why.  Here's a snippet


$sessionid = session_id();

$queryresult = mysql_query("SELECT * FROM energybook WHERE session='$sessionid'");
$booknumrows = mysql_num_rows($queryresult);

if($booknumrows == 0)
   print "HEY!, I found a one!.  Let's update the existing record";
   Print "Let's insert the record now";

The problem here is, I know I have an existing record in my table but the thing is not finding it.  Ok, I know that if I close my browser and reopen, i'll get another session but all this occurs within the SAME session so I don't believe that's the problem.

I'm stumped.
Who is Participating?
dkjariwalaConnect With a Mentor Commented:
You don't need to select all the fields by using SELECT * , you can just do like

select ANY_ONE_FIELD_NAME from energybook where session='$sessionid';

This would be more efficient.

Also, make sure that query is executed successfully.

$result = mysql_query("select ANY_ONE_FIELD_NAME from energybook where session='$sessionid') or die('Can not execute query. ' . mysql_error());

   print "Record exists !!";

Why this line:

if($booknumrows == 0)

Shouldn't the number of rows be 1 if you should update?

if($booknumrows == 1)

Batalf is Correct, you will only get the message if no records are found.

Richard QuadlingSenior Software DeveloperCommented:
You could also use COUNT(*) AS RecordCount, rather than actually getting the entire record set back and then counting the rows.

If you are only ever expecting 0 or 1 record, then OK, but if you COULD get thousands of results, then COUNT(*) SHOULD be faster!



$sessionid = session_id();

$queryresult = mysql_query("SELECT COUNT(*) AS RecordCount FROM energybook WHERE session='$sessionid'");
if (isset($queryresult))
 $booknumrow = mysql_fetch_array($queryresult);

 if($booknumrow[0] > 1) print "Oh dear! Too many SOMEHOW!";
 else if ($booknumrow[0] == 1) print "HEY!, I found a one!.  Let's update the existing record";
 else Print "Let's insert the record now";


Richard Quadling.
Oops I missed on that ,

My friend Richard is DEFINATELY correct.
Infect I shall say use count(*) only. If you just want to check if record is there or not.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.