我正在
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result
resource in *filename* on line 81
运行查询以构建图表。查询从mysql数据库获取数据并使用它来构建图表。
通常,我收到此错误并转到代码并找到我搞砸了,修复它并继续前进的地方。关于这个问题的棘手部分是查询实际上正在运行,并且正在构建和准确显示图表。为什么我的服务器(xampp上的localhost)告诉我,当它可以正常使用资源时查询结果是坏的?
以下是完整查询:
$chart=array();
$roll=array();
//select used terms
$rosh=mysql_query("select distinct term from search_terms");
while($roshrow=mysql_fetch_assoc($rosh)){
extract($roshrow);
$roll[]=$term;
}
//select term_number for each term
foreach($roll as $sterm){
$termarray=array();
**//following is line 81**
$bashq="select term_number from search_terms where term ='$sterm'";
$bash=mysql_query($bashq);
while($brow=mysql_fetch_assoc($bash)){
extract($brow);
//put results into array to sum
$termarray[]=$term_number;
}
$termsum=array_sum($termarray);
//put term=>number array for chart script
$chart[$sterm]=$termsum;
}
//sort array so high numbers at beginning
arsort($chart);
//slice top 10 terms
$chart=array_slice($chart,0,10);
答案 0 :(得分:2)
这样做:
$rosh=mysql_query("select distinct term from search_terms")
or die("Error with query: " . mysql_error());
和此:
$bash=mysql_query($bashq)
or die("Error with query: " . mysql_error();
这会在失败时告诉你。你是对的,你收到的消息是因为mysql_query已经返回“false”并且不是有效的结果资源。
答案 1 :(得分:1)
因为你在一个循环中查询,所以没有处理其中一个术语(可能是因为search_terms缺少特定转弯的行。这很奇怪,因为你正在查询同一个表。
但是,由于它是一个警告,而不是致命的错误,它仍然会继续。
无论哪种方式,这似乎都是错误的方式来提取数据,你可以用一个查询,直接在SQL服务器中进行充分排序(ORDER BY),GROUP BY和SUM()来获取你的术语总和
你应该阅读你的SQL:)
SELECT term, SUM(term_number) as term_sum FROM search_terms GROUP BY terms ORDER BY term_sum DESC LIMIT 10
然后只需将其复制到您的哈希表中,它应该已经排序,并且仅限于10个条目。