2013-05-12 70 views
-2

我有一個巨大的數據庫包含視頻。每個視頻都有一個關鍵字數據,其中包含關於由';'分隔的視頻的關鍵字我想獲得所有視頻中所有關鍵字的列表,但沒有任何重複。PHP獲取數據庫中所有關鍵字的列表

有沒有一種合適的方式來獲取列表?

+6

有存儲它本來是一個正確的方式 - 在他有一個標準化的許多一對多的形式 – zerkms 2013-05-12 08:25:33

+0

@zerkms不是一個有用的評論,他的數據!你告訴他應該是不同的是沒用的。 – 2013-05-12 08:48:41

+0

@zerkms是正確的,數據庫結構的可以改變,一個腳本可以很容易地修復(規範化)。 – 2013-05-12 08:53:55

回答

0

從數據庫中提取數據,並建立一個數組。

//Get Data in Array 
$KeywordList = array(); 
$AllData = getFromDB(); 

foreach($AllData as $Record){ 

    $RecordKeywords = explode(';', $Record['KeyWords']); 

    //Add to keyword list, overwriting duplicates 
    foreach($RecordKeywords as $Keyword){ 
    $KeywordList[$Keyword] = $Keyword; 
    } 



} 

//This will give you a list of all keywords without duplicates 
print_R($KeywordList); 
0

你可以做一個簡單的查詢搜索視頻表,你可以使用篩選算法。

$sql = mysql_query("SELECT * FROM video_table WHERE 1"); 
$count = mysql_num_rows($sql); 

$keywords = array(); 
$id = array(); // IF Needed to match the video to its keywords. 

while($row = mysql_fetch_assoc($sql)) { 
    $keywords[] = row['keywords']; 
    $id[] = row['id']; // Should be the primary key in your db table. on Auto Increment 

} 

$video_keywords = array(); 

for($i = 0; $i < $count; $i++) { 
    $keywords_expanded = explode(';',$keywords[$i]); 
    $keywordsExp_count = count($keywords_expanded); 
    for($j = 0; $j < $keywordsExp_count; $j++) { 
    $video_keywords[$k] = $keywordsExp_count[$j]; 
    $k++; 
    } 
} 

$video_keywords = array_unique($video_keywords); 

print_r($video_keywords); 
相關問題