问题描述
|
在有人跳上我之前,我在这里已经找到了类似的问题,但不幸的是,他们的回答似乎不适用于我的问题。
我创建了一个名为“ 0”的函数,以便在查询出错时更容易产生错误(带有标准输出)。代码如下:
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文件中),而只是使用同一文件中的代码行而不使用return语句,
(例如$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}\')\";
任何对此的投入将不胜感激。
谢谢,
模范解决方法
binding昧的猜想是约束规则在这里生效。 PHP可能会将您的功能视为
return (mysql_query(...)) or die(...);
然后在看到die()之前返回。尝试像这样重写
function sqlQuery(...) {
$result = mysql_query(...);
if ($result === FALSE) {
die(mysql_error(...));
}
return $result;
}
因此,不会有任何错误的解析。