Newbie alert: supplied argument is not a valid MySQL result resource

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Okay, so I get that the mysql_query() function here is not returning a valid 
resource identifier.  I just can't figure out why...here's the pertinent 
code:

(db.php)
<?php

 $db = @mysql_connect('www.myhost.edu', 'user', 'pass');

 if(!$db || !@mysql_select_db('osa', $db))
 {
  die('unable to connect to mysql server: ' . mysql_error());
 }
?>

(auth.php)
<?php

 // Load database
 require_once("db.php");

 // are we trying to authenticate?
 if (isset($_POST["login"]) && isset($_POST["passwd"])) {
  // get password hash from database
  $query = mysql_query("SELECT EmpPassEncrypt FROM Employees WHERE 
EmpEmail='" . $_POST["login"] . "'");
  $passwd = mysql_fetch_array($query);

  // check for entry
  if (!$passwd[0]) {
   // do stuff
  }

  // Authenticate against given password
  if ($passwd[0] == crypt($_POST['passwd'], substr($passwd[0], 0, 2))) {

   // Success!
   // Set session info
   $skey = crypt($passwd[0], substr(time(), -2));
   $query = mysql_query("INSERT INTO Sessions(SKey, STimeStamp) VALUES ('" . 
$skey . "', FROM_UNIXTIME(" . time() . "))")
    || die ('Could not write session data: ' . mysql_error());

   // get sid and write cookies
   $query = mysql_query("SELECT MAX(SID) FROM Sessions")
    || die ('Could not query database: ' . mysql_error());
   $sid = mysql_fetch_array($query) || die ('Could not fetch from database: 
' . mysql_error());   // <---  line 49
   setcookie("user", $_POST["login"]);
   setcookie("sid", $sid[0]);
   setcookie("skey", $skey);

This yields the following error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result 
resource in E:\OSA\functions\auth.php on line 49
Could not fetch from database:

Okay, so $query is not returning a valid resource identifier, but it's also 
not returning false, because it doesn't die at line 48... so I try:

(between lines 48 & 49): die($query);

And I get: 1

wtf?  As I understand it, SELECT statements should return 0 or a resource 
identifier only.  I have no idea what a result of "1" means, or why it's 
happening.  And yes, the SQL line works fine in MySQL.  I tried to Google 
this one, but all I got were people with bad syntax in their SQL, or who 
were getting false from mysql_query() but not error checking it.  Also, is 
there any way to tell PHP to throw an error instead of a warning when I try 
an operation on an invalid resource like this?

Thanks a bunch,
Matt 

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


[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux