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 || [EMAIL PROTECTED]('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