2013-11-25 3 views
0

Я пытаюсь сохранить данные из опубликованной веб-формы в базе данных MySQL.Использование разделителей при хранении данных флажка в базах данных MySQL

Как правило, с помощью простого текста или ввода номера, каждый вход имеет идентификатор, который относится к конкретному quesiton, и как таковой каждый ответ создает новую запись в таблице «ответы»

например,

<input type="text" value="hello" id="qid_101" name="q_101"> 

Когда это опубликовано, я использую php, чтобы вырезать номер qid и сохранить его против этого значения.

Однако когда группа флажков имеет данные размещены, результат представляет собой массив, т.е.

<div class="checkboxes"> 
    <div> 
    <input type="checkbox" value="A " name="checkboxes[]" /> 
    <span class="inline">a</span> 
    </div> 
    <div> 
    <input type="checkbox" value="B" name="checkboxes[]" /> 
    <span class="inline">b</span> 
    </div> 
    <div> 
    <input type="checkbox" value="C" name="checkboxes[]" /> 
    <span class="inline">c</span> 
    </div> 
</div> 

дает мне массив с именем флажков, которые я не могу непосредственно хранить в базе данных.

Following the advise of others on SO Я планирую взорвать массив в строку и историю, которые затем, когда ссылаются на нее, снова взорвутся.

У меня есть два вопроса:

1) Это чувствует, как плохая практика для меня, потому что это денормализации мои данные, но я не могу придумать другой способ сделать это (ответы хранятся уникальные по пользователь и идентификатор вопроса - поэтому сохранение каждого значения флажка по одному и тому же идентификатору вопроса приведет к поломке других частей сайта)

2) Что такое хороший разделитель для использования при иммобилизации массива - есть ли список символов, которые я должен использовать избегать MySQL, чтобы избежать путаницы?

ответ

1

Если ваш набор ответов известен как, скажем, только альфа, то запятая является достаточным разделителем. Если нет, используйте функцию serialize() для хранения массива значений в виде строки и сохранения в MySQL.

Я согласен с тем, что денормализация немного затихает. Не зная больше о вашем приложении, у меня возникнет соблазн добавить таблицу соединений (user_id, question_id, answer), чтобы хранить несколько ответов на пользователя.

+0

Да, мне нужно узнать больше о таблицах JOIN, поскольку я в настоящее время их не использую, и я подозреваю, что они являются ответом, который я ищу. Спасибо за информацию о serialize() - она ​​хранит и массиву в виде строки? – Gideon

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