PHP从数据库中获取所有关键字的列表


php get a list of all keywords from database

我有一个包含视频的庞大数据库。每个视频都有一个关键字数据,其中包含一个关于视频的关键字,由';'分隔,我想在所有视频中获得所有关键字的列表,但没有任何重复。

是否有合适的方法来获取列表?

从数据库中提取数据并构建数组。

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