我在今天第一次出现的网站上出现了错误,尽管几个月都运行良好。
警告:mysql_fetch_array():提供的参数不是第33行/web_directory/index.php中的有效MySQL结果资源
以下是这些行的代码。
<? $sql = "SELECT
p.id as 'id',
p.post_title as 'client',
(SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = p.id AND `meta_key` = 'thumb1') as 'thumb'
FROM
`wp_posts` p
INNER JOIN `wp_postmeta` pm ON (p.id = pm.post_id)
INNER JOIN `wp_term_relationships` wtr ON (p.id = wtr.object_id)
INNER JOIN `wp_term_taxonomy` tt ON (wtr.term_taxonomy_id = tt.term_taxonomy_id)
WHERE
tt.term_id = 439
AND tt.taxonomy = 'category'
AND p.post_status = 'publish'
GROUP BY p.id
ORDER BY p.id DESC
LIMIT 5
";
$sql = mysql_query($sql);
$i=0;
while($s = mysql_fetch_array($sql))
{
$i++;
?>
我不是网站的原始开发者,我对mysql没有太多的了解。感谢您提前获得的精彩答案!
答案 0 :(得分:1)
您的查询可能有一些错误;尝试将or die(mysql_error())
添加到mysql_query
,如下所示:
$sql = mysql_query($sql) or die(mysql_error());
mysql_query
应返回您可以查看的资源标识符:
if (!is_resource($sql)){
die(mysql_error());
}
答案 1 :(得分:0)
显然,您正在为mysql_fetch_array()提供有效的MySQL结果资源。
每当mysql_query因任何原因失败时,都可能发生这种情况。 (查询错误,数据库已经消失,网络已关闭等)。
在尝试迭代其数据之前,您应该检查对mysql_query的调用是否成功。如果你添加一张支票并打印出错误的真实含义,你可以自己确定它。
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.
http://php.net/manual/en/function.mysql-query.php
在mysql_fetch_array()之前添加它将确保脚本在发生错误时死亡,包括实际的错误消息:
$res = mysql_query($sql);
if (!$res) {
die('Invalid query: ' . mysql_error());
}