Virgülle Ayrılmış Değerler ve benzeri PHP / MySQL Sorunları

2 Cevap php

The Set up This is more or less a follow up question to something I had previously posted regarding comma separated values (explode,implode). Here's the scenario which has been stomping me the last few days as I'm a noob--sorry for the lengthy post.

Ben url (index.php? Id = değişken) üzerinden bir değişken geçiyorum, ben sonra içeren satırları bulmak için veritabanı kontrol etmenizi kullanarak değişken

SELECT * FROM table WHERE column LIKE '%$variable%' 

Sonuç değişkeni veritabanında birden çok kez görünen bir virgülle ayrılmış değer çünkü ben joker kullanıyorum.

Bu yüzden atama olsaydı - popüler TV şovları için okullar kullanıcı show tv birden fazla okula atayabilirsiniz ki .. benim veritabanı kurmak olduğunu söylüyorlar. IE.

South Park -> fsu, nyu, mit

Archer -> harvard, nyu

Index.php? Id = NYU görüntülemek istiyorsunuz Sourth Park & Archer.

The Problem Because I am using Like '%variable%'

If I have the following: South Park-->uark Archer-->ua

index.php?=ua Instead of just Archer showing, Southpark would also show.

Hangi nedeniyle joker mantıklı ... ama herkes ben istediğiniz sonuçları elde bunu yapmak için bir yol düşünmek olabilir? .. Bir virgülle ayrılmış değer kullanarak daha kesin sonuçlar elde etmek için herhangi bir yolu var mı? .. Ben tamamen çiğnendi ediyorum ve herhangi bir yardım takdir edecektir.

2 Cevap

A better option is to create two other tables. One table is the one you already have 'tv_shows' and the second table is the 'tags' table and the third table is the connection table.

İşte bir örnek:

 CREATE TABLE tags(id INT, tag VARCHAR(200));
 CREATE TABLE tv_tags(show_id INT, tag_id INT);

 SELECT FROM tv_shows,tv_tags WHERE tv_shows.id=tv_tags.show_id AND tag_id IN (SELECT id FROM tags WHERE tag LIKE 'tag');

Eğer regexp operatörü denedi? gibi sth

SELECT * FROM table WHERE column REGEXP('(^|,)%variable%(,|$)')  

Eğer etiketleri arasında boşluk varsa bu biraz farklı olabilir, ancak fikir burada