mysql_fetch_array中的 MySQL 参数无效


invalid MySQL argument in mysql_fetch_array

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /rideanddrive/_classes/__base.php on line 45

我的代码 :

public static function SelectSpecific($obj, $data_base, $cond)
{
    self::$query = "select $obj from " . self::$baseprefix . "$data_base where $cond";
    $out = self::Execute();
    $array = mysql_fetch_array($out); // THIS LINE IS WARNING LINE
    return $array[$obj];
}

如果需要,执行函数:

private static function Execute() 
{
    $out = mysql_query(self::$query);
    return $out;
}

代码工作正常。我在本地主机上没有收到警告(运行 WAMP,可能已经关闭了它们?),它也可以在实时服务器上工作,但是我收到上述警告,我该如何纠正它以便警告消失?

在您的选择特定函数上嵌入一个if检查以查看您的执行函数为结果返回适当的资源.. 如果没有,则回显您的 SQL,然后在服务器上单独运行它,以便如果 SQL 有任何错误,您可以找到错误,这是嵌入if的更新函数

public static function SelectSpecific($obj, $data_base, $cond)
    {
        self::$query = "select $obj from " . self::$baseprefix . "$data_base where $cond";
        $out = self::Execute();
        if($out){
          $array = mysql_fetch_array($out); // THIS LINE IS WARNING LINE
          return $array[$obj];
       }else {
         return false;
       }
    }

此警告表明,由于某种原因,SQL查询存在(语法或语义)问题,因此mysql_query返回FALSE而不是MySQL结果资源。

您可以使用mysql_error()从 MySQL 中检索错误消息作为字符串进行调试。


请注意,您正在使用的 mysql 扩展从 PHP 5.5 开始已弃用,并将在未来的 PHP 版本中删除。考虑切换到 mysqli

您的查询可能会因为错误而返回FALSE

对于返回结果集的 SELECT、SHOW、DESCRIBE、EXPLAIN 和其他语句,mysql_query() 在成功时返回资源,在出错时返回 FALSE。

var_dump()你的$out,看看它是否FALSE

更好的是,只需显示您的错误即可进行调试:

if (!$out) {
    $message  = 'Invalid query: ' . mysql_error() . "'n";
    $message .= 'Whole query: ' . $query;
    die($message);
}

顺便说一句,您不应该再使用 mysql_query() 和所有其他mysql_*函数,因为它们已被弃用。改用 mysqliPDO