2016-03-13 3 views
0

$ Участники - это VARCHAR в MYSQL и выглядит вот так: q1qq2qq3qq4qq5qq6q. Я хочу иметь оператор if, который является , если найдено q$_SESSION["UserID"]q, то есть я хочу, чтобы он нашел некоторые из входов в $participants, например q2q. Я не знаю, как это написать. $_SESSION["UserID"] это один из столбцов идентификаторов в базе данных MYSQL и, следовательно, равно числу таких как 2.найти и заменить в VARCHAR, используя php

Я попытался следующие в PHP

if(strpos($participants, q$_SESSION["UserID"]q)){ 
    echo "succeeded"; 
}; 

, но он не работает. Кроме того, я также хочу убрать q$_SESSION["UserID"]q в том случае, если он есть. Я пробовал

$participants = preg_replace("q{$_SESSION["UserID"]}q", "", $participants); 

но он не работает. Идеи?

+1

if (strpos ($ участники, "q". $ _ SESSION ["UserID"]. "Q")) echo "successed" –

+0

Вы проверяете наличие ошибок? 'Q' должно что-то бросать. Ваше регулярное выражение не работает, потому что 'q' будет действовать как разделитель, а не фактический символ, альфа-символы являются действительными разделителями, хотя – chris85

+2

Это ужасный способ хранения данных. ** refactor ** ваша оригинальная концепция – RiggsFolly

ответ

1

Вы можете сделать следующее:

if(strpos($participants, "q" . $_SESSION["UserID"] . "q") !== FALSE){ 
    echo "succeeded"; 
}; 

Или вы могли бы использовать LIKE заявление в MySQL, например,

SELECT * FROM table WHERE participants LIKE "%q2q%";

Однако, как сказал RiggsFolly, это ужасный способ хранения данных. Создайте таблицу участников с первичным ключом, внешним ключом к вашей основной таблице и идентификатором участника.

E.g.

participantinstanceid int primary key 
instanceid int foreign key -> Your instance table 
participantid int foreign key -> participant table 

Таким образом, вы можете просто запросить таблицу на основе экземпляра instanceid, чтобы получить всех участников. Если вам нужна дополнительная помощь, я был бы рад помочь с лучшей структурой db.

Смежные вопросы