Solved

Sessions and MySQL

Posted on 2002-03-08
5
209 Views
Last Modified: 2008-03-06
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

<?PHP
session_start();

$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";
else
   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.
Thanks,
KABOOM
0
Comment
Question by:KABOOM
5 Comments
 
LVL 32

Expert Comment

by:Batalf
ID: 6851017
Why this line:

if($booknumrows == 0)

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

if($booknumrows == 1)



0
 
LVL 5

Expert Comment

by:andriv
ID: 6851288
Batalf is Correct, you will only get the message if no records are found.



0
 
LVL 5

Accepted Solution

by:
dkjariwala earned 50 total points
ID: 6852382
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());

if(mysql_num_rows($result)>0)
   print "Record exists !!";

JD
0
 
LVL 40

Expert Comment

by:Richard Quadling
ID: 6864129
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!

e.g.


<?PHP
session_start();

$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";
 }
?>


Regards,

Richard Quadling.
0
 
LVL 5

Expert Comment

by:dkjariwala
ID: 6864150
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.

JD
0

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
parse url to form? 7 25
Redirect 301 from one address  to another 5 26
PHP Mail error 3 28
Showing multiple maps using PHP and Google Maps 8 21
These days socially coordinated efforts have turned into a critical requirement for enterprises.
This article discusses four methods for overlaying images in a container on a web page
The viewer will learn how to count occurrences of each item in an array.
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question