Re: [PHP] Unbuffered Query

2007-01-15 Thread Németh Zoltán
I think mysql_data_seek throws this warning also if there is no data in
the result object at all, so I would check the result before positioning

greets
Zoltán Németh

2007. 01. 12, péntek keltezéssel 23.30-kor Richard Lynch ezt írta:
 I have this process that dumps out database records to static HTML pages.
 
 The basic algorithm goes like:
 
 //Set any un-parented item (a root in the thread) to be its own parent:
 update entry set original_id = entry_id where original_id is null
 
 //collect any dirty entries (changed in db, need to re-publish)
 $dirty = select entry_id from entry where dirty = 1
 
 while (list($entry_id) = mysql_fetch_row($dirty)){
   //find the whole thread:
   $followups = select entry_id, X, Y from entry where original_id =
 $dirty_id
   //there is an ORDER BY which is not relevant
 
   //get some thread metadata from the first row's X field
   list($junk, $X) = mysql_fetch_row($followups);
   //$X is the same for all rows...
   echo h1$X/h1\n;
 
   //reset to row 0
   mysql_data_seek($followups, 0);
   while (list($entry_id, $X, $Y) = mysql_fetch_row($followups)){
 echo p$Y/p\n;
   }
 }
 
 So, how come *SOMETIMES*, seemingly at random, I get:
 
 Warning: mysql_data_seek(): Offset 0 is invalid for MySQL result index
 116 (or the
 query data is unbuffered) in
 /www/acousticdemo.com/web/complaints/publish.cron on
 line 26
 
 Line 26 is, obviously, the mysql_data_seek call above...
 
 I do not *THINK* there is any other process anywhere deleting rows
 from the table -- it should be an ever-growing table...
 
 So is the query data being unbuffered out from under me due to some
 my.cnf setting?...
 
 Or am I just plain wrong, and *something* is deleting from the entry
 table?
 
 I Googled for the error message, and found about a 26,000 web sites
 that are exhibiting this error, rather than the folks discussing this
 error. :-v
 
 The few I was able to weed out were obvious logic errors, which I
 don't think I have.
 
 I've read the mysql_unbuffered_query on php.net and think I understand
 it in respect to mysql_query et al.
 
 I guess I'm looking for reassurance that it's definitely my mistake
 somewhere in the mess I've made, and that I'm looking for a delete
 query, and it's not a subtle bug or feature I'm failing to understand.
 
 :-)
 
 -- 
 Some people have a gift link here.
 Know what I want?
 I want you to buy a CD from some starving artist.
 http://cdbaby.com/browse/from/lynch
 Yeah, I get a buck. So?
 

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Unbuffered Query

2007-01-13 Thread Roman Neuhauser
# [EMAIL PROTECTED] / 2007-01-12 23:30:15 -0600:
 Warning: mysql_data_seek(): Offset 0 is invalid for MySQL result index
 116 (or the
 query data is unbuffered) in
 /www/acousticdemo.com/web/complaints/publish.cron on
 line 26
 
http://www.php.net/manual/en/function.mysql-unbuffered-query.php:

You cannot use mysql_num_rows() and mysql_data_seek() on a result set
returned from mysql_unbuffered_query().

-- 
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE. http://bash.org/?255991

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Unbuffered Query

2007-01-12 Thread Richard Lynch
I have this process that dumps out database records to static HTML pages.

The basic algorithm goes like:

//Set any un-parented item (a root in the thread) to be its own parent:
update entry set original_id = entry_id where original_id is null

//collect any dirty entries (changed in db, need to re-publish)
$dirty = select entry_id from entry where dirty = 1

while (list($entry_id) = mysql_fetch_row($dirty)){
  //find the whole thread:
  $followups = select entry_id, X, Y from entry where original_id =
$dirty_id
  //there is an ORDER BY which is not relevant

  //get some thread metadata from the first row's X field
  list($junk, $X) = mysql_fetch_row($followups);
  //$X is the same for all rows...
  echo h1$X/h1\n;

  //reset to row 0
  mysql_data_seek($followups, 0);
  while (list($entry_id, $X, $Y) = mysql_fetch_row($followups)){
echo p$Y/p\n;
  }
}

So, how come *SOMETIMES*, seemingly at random, I get:

Warning: mysql_data_seek(): Offset 0 is invalid for MySQL result index
116 (or the
query data is unbuffered) in
/www/acousticdemo.com/web/complaints/publish.cron on
line 26

Line 26 is, obviously, the mysql_data_seek call above...

I do not *THINK* there is any other process anywhere deleting rows
from the table -- it should be an ever-growing table...

So is the query data being unbuffered out from under me due to some
my.cnf setting?...

Or am I just plain wrong, and *something* is deleting from the entry
table?

I Googled for the error message, and found about a 26,000 web sites
that are exhibiting this error, rather than the folks discussing this
error. :-v

The few I was able to weed out were obvious logic errors, which I
don't think I have.

I've read the mysql_unbuffered_query on php.net and think I understand
it in respect to mysql_query et al.

I guess I'm looking for reassurance that it's definitely my mistake
somewhere in the mess I've made, and that I'm looking for a delete
query, and it's not a subtle bug or feature I'm failing to understand.

:-)

-- 
Some people have a gift link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Unbuffered Query

2007-01-12 Thread Jim Lucas

Richard Lynch wrote:

I have this process that dumps out database records to static HTML pages.

The basic algorithm goes like:

//Set any un-parented item (a root in the thread) to be its own parent:
update entry set original_id = entry_id where original_id is null

in the following you are looking for dirty flagged rows, were they set 
to dirty before or after your previous statement?

//collect any dirty entries (changed in db, need to re-publish)
$dirty = select entry_id from entry where dirty = 1

while (list($entry_id) = mysql_fetch_row($dirty)){
  //find the whole thread:
  $followups = select entry_id, X, Y from entry where original_id =
$dirty_id
are you really meaning to use $dirty_id, or did you mean to use 
$entry_id???  $dirty_id doesn't exist as far as I can tell.  unless it 
is something that was set before all this.

  //there is an ORDER BY which is not relevant

Personally, I would do some check right here to see if the result set 
has at least one row at this point and then issue a continue; if 
mysql_num_rows() returns 0.  That way you won't get empty h? tags 
floating around.

  //get some thread metadata from the first row's X field
  list($junk, $X) = mysql_fetch_row($followups);
  //$X is the same for all rows...
  echo h1$X/h1\n;
I would check your HTML output for empty h1/h1 tags, this would tell 
you that it didn't find anything :(


Hope this helps

Jim Lucas


  //reset to row 0
  mysql_data_seek($followups, 0);
  while (list($entry_id, $X, $Y) = mysql_fetch_row($followups)){
echo p$Y/p\n;
  }
}

So, how come *SOMETIMES*, seemingly at random, I get:

Warning: mysql_data_seek(): Offset 0 is invalid for MySQL result index
116 (or the
query data is unbuffered) in
/www/acousticdemo.com/web/complaints/publish.cron on
line 26

Line 26 is, obviously, the mysql_data_seek call above...

I do not *THINK* there is any other process anywhere deleting rows
from the table -- it should be an ever-growing table...

So is the query data being unbuffered out from under me due to some
my.cnf setting?...

Or am I just plain wrong, and *something* is deleting from the entry
table?

I Googled for the error message, and found about a 26,000 web sites
that are exhibiting this error, rather than the folks discussing this
error. :-v

The few I was able to weed out were obvious logic errors, which I
don't think I have.

I've read the mysql_unbuffered_query on php.net and think I understand
it in respect to mysql_query et al.

I guess I'm looking for reassurance that it's definitely my mistake
somewhere in the mess I've made, and that I'm looking for a delete
query, and it's not a subtle bug or feature I'm failing to understand.

:-)



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php