-2
我有一個巨大的數據庫包含視頻。每個視頻都有一個關鍵字數據,其中包含關於由';'分隔的視頻的關鍵字我想獲得所有視頻中所有關鍵字的列表,但沒有任何重複。PHP獲取數據庫中所有關鍵字的列表
有沒有一種合適的方式來獲取列表?
我有一個巨大的數據庫包含視頻。每個視頻都有一個關鍵字數據,其中包含關於由';'分隔的視頻的關鍵字我想獲得所有視頻中所有關鍵字的列表,但沒有任何重複。PHP獲取數據庫中所有關鍵字的列表
有沒有一種合適的方式來獲取列表?
從數據庫中提取數據,並建立一個數組。
//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);
你可以做一個簡單的查詢搜索視頻表,你可以使用篩選算法。
$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);
有存儲它本來是一個正確的方式 - 在他有一個標準化的許多一對多的形式 – zerkms 2013-05-12 08:25:33
@zerkms不是一個有用的評論,他的數據!你告訴他應該是不同的是沒用的。 – 2013-05-12 08:48:41
@zerkms是正確的,數據庫結構的可以改變,一個腳本可以很容易地修復(規範化)。 – 2013-05-12 08:53:55