Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Sessions and MySQL

Posted on 2002-03-08
5
Medium Priority
?
215 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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 200 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

On Demand Webinar: Networking for the Cloud Era

Did you know SD-WANs can improve network connectivity? Check out this webinar to learn how an SD-WAN simplified, one-click tool can help you migrate and manage data in the cloud.

Question has a verified solution.

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

Part of the Global Positioning System A geocode (https://developers.google.com/maps/documentation/geocoding/) is the major subset of a GPS coordinate (http://en.wikipedia.org/wiki/Global_Positioning_System), the other parts being the altitude and t…
Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
The viewer will learn how to look for a specific file type in a local or remote server directory using PHP.

721 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