「value1、value2、value3など...」のように、タグが行内に展開された配列として格納されるタグシステムがあります。
タグ検索ページを作成しようとしていますが、方法がわかりません。それを配列に変換して、誰かが検索した特定のタグが配列内にあるかどうかを確認します(SELECTを使用している間は展開できないため)。
誰かが助けることができますか、それは不可能ですか?
皆さんの助けに感謝します、それはうまくいきました。
カンマ区切りの文字列を操作するというmysql
関数があります。FIND_IN_SET
例えば:
SELECT * FROM posts WHERE FIND_IN_SET('some_tag', post_tags)>0
ここのドキュメント:Mysql FIND_IN_SET
より良い方法は、データを正規化し、タグを別のテーブルに移動してから、タグをエンティティに結合することだと思います。検索は速くて簡単です =)
データベースを正規化します
tags {
object_id
tag_id
}
または、あなたが怠け者なら、そうしてください
UPDATE tags = CONCAT(",", tags, ",") FROM table
その後
SELECT * FROM table WHERE tags LIKE '%,selected_tag,%'
データベースから $tags_str を読み取ります。
文字列を配列に変換します。
<?php
$tags_str = "value1, value2, value3";
$tags_arr = explode(', ', $tags_str);
?>
次に、数学を検索するためにin_array() PHP 関数を使用します。
選択クエリで「LIKE」を使用できます
SELECT row FROM table WHERE tag LIKE '%search_value%'