Thanks for the info, Tom. That explains it. I can't really run the query again because of time and the size of the database. There is currently over 200,000,000 records in some of the tables. The subsets I get are generally small. What my current thinking is, is to grab the info I need into a temporary table and just run my search against the temporary table (taking all records) and seeking to the correct position for display. I was trying to avoid this if the information about my previous query was available somewhere.
Michael ----- Original Message ----- From: "Tom Rogers" <[EMAIL PROTECTED]> To: "Michael Lewis" <[EMAIL PROTECTED]> Cc: <[EMAIL PROTECTED]> Sent: Tuesday, December 16, 2003 9:25 PM Subject: Re: [PHP] saving resource objects > Hi, > > Wednesday, December 17, 2003, 12:15:24 PM, you wrote: > ML> I posted this on the PHP-DB list and then realized it was a more general > ML> question about PHP than DB so I am posting it here also hoping someone can > ML> help. > > ML> I have a fairly common problem that I have not been able to find the > ML> solution for in the documentation and FAQs. I have to access a MSSQL box > ML> from a LAMP box using PHP. That part works fine (thank you freetds.org). I > ML> need to display results from user queries 10 at a time with the basic NEXT > ML> and BACK logic. I can use the mssql_data_seek function to move amongst the > ML> record set. The problem is how do I save the results variable between web > ML> page updates? I cannot save the record set variable in my session because it > ML> always returns as zero. Consider the following code: > > ML> <?php > ML> session_start(); > ML> include("localsettings.php"); > ML> $s = mssql_connect($Server, $User, $Pass) or die("Couldn't connect to SQL > ML> Server on $Server"); > ML> mssql_select_db($SDB, $s) or die("Couldn't open database $SDB"); > ML> $sql="select * from products where prod_id='95038'"; > ML> $ress=mssql_query($sql) or die(mssql_get_last_message()); > ML> $_SESSION['ress']=$ress; > ML> print $ress."\n"; > ML> $ress=$_SESSION['ress']; > ML> print $ress."\n"; > ?>> > > ML> The first time I print RESS is comes back as RESOURCE OBJECT #12, the second > ML> time as 0. When I look in the session file, it is zero. > > ML> Help! > > ML> How can I pass this variable and its contents so they are usable to the next > ML> web page? > > ML> Thanks in advance. > > ML> Michael > > > The connection to the database will close at the end of the request so your > resource will no longer be valid. You will have to rerun the query again. > If there is some way to identify each row then change the query to always get an > id that is higher than the last one you read (that is the one you save in the > session) a bit like this > > $last_id =0; > if(isset($_SESSION['last_id'])) $last_id = $_SESSION['last_id']; > $sql = "SELECT * FROM table WHERE id > '$last_id' order by id"; > //do query > $x =0 > while(get_reults && $x < 10){ > //do whatever > $x++; > } > $_SESSION['last_id'] = id; > > -- > regards, > Tom > > -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php