次の文字列がまだ存在しない場合は、フィールドに文字列を追加しようとしています。
mysql_query("UPDATE gals4 SET tags = CONCAT(tags, '$instag') WHERE id = '$instagnum' AND tags NOT LIKE '$instag'");
これは、フィールドに存在するかどうかに関係なく、「タグ」に追加されるだけです。私はここで何が間違っているのですか?
直接の質問に答えるには、一致文字列の最初と最後に文字%を入力する必要があります。
"AND tags NOT LIKE '%$instag%'"
ただし、これはSQLデータベースにデータを格納するためのひどい方法であることに注意する必要があります。少なくとも3つの問題があります。
正しい解決策は、gals_tagsのような名前の、galid列とtag列を持つ少なくとも1つのテーブルをデータベースに追加することです。このテーブルにタグごとに1つのレコードを挿入します。ギャルに複数のタグがある場合は、タグごとに1つのレコードを追加します。
別の変数$instagwildcardが必要です。これは、$ instagですが、$ instagの後に(場合によっては前に)%が付いています。
書かれているように、selectは$ instagと完全に一致しない文字列を探しています。また、文字列のどこかに$ instagを含む文字列も、完全に一致するのではなく除外しようとしていると思います。
$instagwildcard = "%" . $instag . "%";
mysql_query("UPDATE gals4 SET tags = CONCAT(tags, '$instag') WHERE id = '$instagnum' AND tags NOT LIKE '$instagwildcard'");
しかし、私はラリーのコメントにも同意します。