$result = mysql_query(" SELECT p.page_url AS url,
COUNT(*) AS occurrences
FROM page p, word w, occurrence o
WHERE p.page_id = o.page_id AND
w.word_id = o.word_id AND
w.word_word = \"$keyword\"
GROUP BY p.page_id
ORDER BY occurrences DESC
" );
$output = "<loginsuccess>";
for( $i = 1; $row = mysql_fetch_array($result); $i++ ) {
$output .="<keyword>".$_POST['keyword']."</keyword><name>".$row['url']."</name><occur>".$row['occurrences']."</occur><queryTime>".(substr($end_time-$start_time,0,5))."</queryTime>";
}
$output .= "</loginsuccess>";
print ($output);
我在XML中获取输出,而不是我想在数组中...如何实现这一点。
以下代码无效......
$ret = array();
for( $i = 1; $row = mysql_fetch_array($result); $i++ ) {
$tmp['url'] = $row['url'];
$tmp['occurrences'] = $row['occurrences'];
$ret[] = $tmp;
}
return $ret;
答案 0 :(得分:7)
当您致电mysql_fetch_array($result)
时,您已经在数组中获得了结果。这就是mysql_fetch_array的作用。
除非你想要其他类型的数组格式?如果是这样,你必须更具体。
答案 1 :(得分:1)
答案 2 :(得分:1)
for-loop 只能以增量方式使用,您尝试使用它来代替 while 循环。这不是“做1000次”,而是“当我们有一行要使用时”。
试试这个:
while($row = mysql_fetch_array($result)) {
$tmp['url'] = $row['url'];
$tmp['occurrences'] = $row['occurrences'];
$ret[] = $tmp;
}
return $ret;
答案 3 :(得分:0)
尝试这样,注意编写SQL语句的here-doc样式。我发现它非常有用。另外,我建议重写SQL以使用JOIN而不是使用连接条件拥挤WHERE子句。
$sql = <<<EOSQL
SELECT p.page_url AS url, COUNT(*) AS occurrences
FROM page p, word w, occurrence o
WHERE p.page_id = o.page_id AND
w.word_id = o.word_id AND
w.word_word = "$keyword"
GROUP BY p.page_id
ORDER BY occurrences DESC;
EOSQL;
$result = mysql_query($sql) or die('failed to execute the query');
while ($row = mysql_fetch_array($result)) {
print_r ($row);
}
希望这大致是你追求的目标
答案 4 :(得分:0)
您需要在使用之前初始化$ tmp数组。