id、value、countの3つの列を持つ「tags」という名前のテーブルがあります。値は一意キーです。
メンバーはお気に入りの音楽のタグを入力することになっています。「tags」テーブルにクエリを実行する自動提案のために、各メンバータグを「members.favorites」テーブルに保存します。
メンバーのお気に入りは次のとおりです。「song1、song2、song3」、「members.favorites」とまったく同じ値を入力します。「タグ」を配置するために、「、」で展開して挿入します。 「tags」なので、「tags」は「song1」、「song2」、「song3」、「count = 1」の3行になります。これで、別のメンバーが来て「song3、song4、song5」と入力し、これを「tags」に入力します。 「、」、「song4」、「song5」は存在しないため、新しい行として挿入されますが、「song3」はすでに存在するため、「song3」に対して「count+1」を実行する必要があります。
私のコードは次のとおりです。
$tags_array = explode(',', $tags);
foreach($tags_array as $key => $val){
$check_if_already_exists = mysql_query("SELECT value FROM tags WHERE value = '$val'");
if(mysql_num_rows($check_if_already_exists)){
// This already exists, so count++
mysql_query("UPDATE tags SET count = count+1 WHERE value = '$val'");
}else{
// It's a new tag, insert
mysql_query("INSERT INTO tags (value, count) VALUES ('$val', '1')");
}
}
しかし、これはどういうわけか有線のようです!各ユーザーは20のお気に入りの曲を持っている可能性があり、上記のコードは最高のパフォーマンスを持っていないようですが、これを改善するためのアイデアはありますか?
ありがとう