2009-05-29 34 views
0
 $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); 

我gettign输出在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

我不太明白这个问题吗?您从mysql_query()获得的$结果已经是一个数组。上面的php代码接受该数组并将其格式化为XML。 – 2009-05-29 14:20:50

+0

Mate,我需要它与Flex进行通信,当它在xml中时我无法获得最终输出...所以想到将它转换为数组......但是当我这样做时......它不工作。 – Kevin 2009-05-29 15:22:45

回答

7

你已经得到数组中的结果,当你调用mysql_fetch_array($result)。这就是mysql_fetch_array所做的。

除非你想要其他类型的数组格式?如果是这样,你必须更具体。

1

使用print_r()

echo "<pre>"; 
print_r($row); 
echo "</pre>"; 

注:如果你不会<pre>标签包装它,输出将难以阅读,因为它会出现在所有在一行

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); 
} 

希望这大概是你追求的

1

一个for循环只是以增量方式来使用,你试图代替循环使用它。这不是“做1000次”,而是“做我们有一排使用”。

试试这个:

while($row = mysql_fetch_array($result)) { 
    $tmp['url'] = $row['url']; 
    $tmp['occurrences'] = $row['occurrences']; 
    $ret[] = $tmp; 
} 
return $ret; 
0

你需要使用它之前初始化$ TMP阵列。