Re: [PHP-DB] Newbie alert: supplied argument is not a valid MySQL result resource

2007-07-11 Thread Niel
Hi

 On my way to bed so too tired too look closely, but at a guess I'd say
 it's a logic error.  I would guess this:
 
 $sid = mysql_fetch_array($query) || die ('Could not fetch from database: 
  ' . mysql_error());   // ---  line 49
 
  isn't evaluating in the order you expect.. You're using a logic
 statement as an assignment, and the result of that get's assigned to your
 variable not the resource you expect. Try it like this to see if it works:
 
 $sid = mysql_fetch_array($query);
 if ($sid === false) die ('Could not fetch from database:  ' . mysql_error()); 
 
 If that's not the problem, I haven't got a clue until after sleep and
 coffee.

I've had some sleep, and coffee, and I see I missed something silly.

I should of suggested this

 // get sid and write cookies
   $query = mysql_query(SELECT MAX(SID) FROM Sessions);
  if ($query === false)  die ('Could not query database: ' . mysql_error());
   $sid = mysql_fetch_array($query)
  if ($sid === false) die ('Could not fetch from database:  ' . mysql_error()); 


--
Niel Archer

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



Re: [PHP-DB] Newbie alert: supplied argument is not a valid MySQL result resource

2007-07-11 Thread Matt Leonhardt
lameck kassana [EMAIL PROTECTED] wrote in message 
news:[EMAIL PROTECTED]
 hey just make this
  $sid = mysql_fetch_array($query) or die ('Could not fetch from database:
 ' . mysql_error().);
  try this

Yep.  I figured that out yesterday.  Hit the nail right on the head.  As 
I've learned from experimentation, the pipe operator takes precedence to the 
assignment operator so I was basically evaluating whether my query or a die 
statement returned a true value (which the query statement was, so it never 
processed the die()) and then assigning true, or 1 to $query.  The 'or' 
operator by contrast processes after the assignment, so the following line:

$query = mysql_query(some SQL) or die();

first assigns a handle to $query (assuming the query is valid, which in my 
case it was) and then evaluated the value of query.  This leaves me with two 
remaining questions.  I'm coming from a Perl background, so I'm wondering if 
there's a documentation page somewhere for PHP operators (something along 
the likes of perlop) and as an experiment I tried the following code, and it 
behaved exactly like the code I first posted, which I'm not sure why:

($query = mysql_query(valid SQL)) || die();

Shouldn't everything within the first set of parentheses here evaluate as 
the first || condition?

Thanks for everyone's help,
Matt 

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