PHP mysql_query,返回整数而不是资源

时间:2011-04-18 20:50:08

标签: php mysql

在有人跳过我之前,我发现了类似的问题here,但遗憾的是他们的答案似乎并不适用于我的问题。

我创建了一个名为sqlReturn()的函数,以便在查询出错时更容易产生错误(使用标准输出)。代码如下:

function sqlResult($query)
{
    return mysql_query($query) 
    or die("SQL Query: " . $query . "<br />SQL Error: " . mysql_error());
}

正如您所看到的,它只是以我喜欢的方式输出错误,并且在编程过程中省去了一些工作量。但是,虽然这在大多数情况下都有效(例如我使用SELECT或INSERT的情况),但它会抛出以下错误:

PHP Warning:  mysql_fetch_array() expects parameter 1 to be resource, 
              boolean given in /var/www/login/login_submit.php on line 42

返回1而不是资源。如果,而不是调用该函数(在一个单独的php文件中),我只是使用相同文件中的代码行而没有返回语句
(即。$sqlResult = mysql_query($sqlQuery) or ...等),它正常返回资源。

如果它是相关的,我的SQL查询也在下面:

$sqlQuery = 
  "SELECT userID, username, password, access_level
   FROM users
   WHERE username = '{$username}'
   AND (password = '{$password_sha1}' OR password = '{$password_sha256}')";

对此的任何意见都表示赞赏。

谢谢,

帕拉贡

1 个答案:

答案 0 :(得分:5)

怀疑绑定规则在这里肆无忌惮。 PHP可能会将您的功能视为

return (mysql_query(...)) or die(...);

并在看到die()之前返回。尝试像这样重写

function sqlQuery(...) {
    $result = mysql_query(...);
    if ($result === FALSE) {
        die(mysql_error(...));
    }
    return $result;
}

因此没有任何错误解析的可能性。