2009-05-29 33 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陣列。