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_*
函数,因为它们已被弃用。改用 mysqli 或 PDO。