在有人跳过我之前,我发现了类似的问题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}')";
对此的任何意见都表示赞赏。
谢谢,
帕拉贡
答案 0 :(得分:5)
怀疑绑定规则在这里肆无忌惮。 PHP可能会将您的功能视为
return (mysql_query(...)) or die(...);
并在看到die()之前返回。尝试像这样重写
function sqlQuery(...) {
$result = mysql_query(...);
if ($result === FALSE) {
die(mysql_error(...));
}
return $result;
}
因此没有任何错误解析的可能性。