2015-01-30 2 views
1

Вместо того, чтобы создать столбец db для каждого значения, я хочу включить их в одно поле, а затем вызвать эти значения, разделенные запятой, в массив PHP, который будет вызываться отдельно позже.Как импортировать значения базы данных, разделенные запятой, в массив

Пример; Значение db для 'data_set' равно; 111, 222, 333

$sql_data = $get['data_set']; 

$data_set = array ($sql_data); 

Хочу $ data_set [0] для возврата 111, $ data_set [1] для возврата 222 и т.д.

Вместо этого он возвращает все значение дБ, что указывает на импорт не распознает значения, разделенные запятыми.

Как это исправить? Или есть лучший подход?

+1

Не очень хорошая идея! Нормализуйте свою БД по крайней мере до уровня 3 – Rizier123

+1

Вам не понравится, что этот дизайн мне больше доверяет. Разделите данные в отдельные строки или, по крайней мере, столбцы. Но чтобы ответить на вопрос 'explode()'. – AbraCadaver

+1

'$ data_set = explode (',', $ sql_data);' :-) Ваш вопрос не ясен :-( – Alex

ответ

1

Я настоятельно рекомендую использовать один или многие из многих вариантов для этого, а не забивать значения в одном поле. Выполнение этого вызовет проблемы в будущем, а обслуживание станет кошмаром. Если вы предоставите немного больше информации о том, с какими данными вы работаете (что представляют цифры? Что использует числа?) Я был бы счастлив проиллюстрировать более удобный дизайн.

Тем не менее, если вы настаиваете на несколько значений в одном поле, вы можете использовать функцию PHP explode():

$data_set = explode(',', $sql_data); 

Обновленный ответ, основанный на комментарий

В этом случае, это несколько способов сделать это. Если свойства всегда находятся в одном порядке и представляют одну и ту же вещь (и их всего 5-6), я бы рекомендовал просто разбить их на отдельные столбцы и соответствующим образом называть столбцы.

Если существует много потенциальных свойств, и они являются переменными, я бы рекомендовал создать таблицу профилей, таблицу свойств (только идентификатор и имя) и таблицу profilesToProperties. Это позволит наиболее гибко корректировать свойства с течением времени. Чтобы получить все свойства для данного профиля, вы бы сделали что-то вроде:

SELECT prof.username, prop.name 
FROM profiles prof 
    LEFT JOIN profilesToProperties ptp ON prof.id = ptp.profile_id 
    LEFT JOIN properties prop ON prop.id = ptp.property_id 
WHERE prop.id = :id 

Это все равно будет возвращать профили с нулевыми свойствами.

+0

Поблагодарите Jim. Я купил javascript для некоторых функций отображения изображений/масштабирования. Сценарий находится на главной шаблон страницы, который используется для динамического создания различных страниц профиля. Этот скрипт требует, конечно, числовых периметров, которые отличаются от одного профиля к другому. Существует множество из 5-6 числовых значений. Поэтому я делал что-то вроде этого ; imageWidth: , –

+0

@ noy-hadar - проверить обновленный ответ.Я бы рекомендовал создать отношение «многие-многие», если свойства являются переменными. –

0

Что можно использовать перед собой: веб-страница викторины, где каждый вопрос имеет, например, 4 разных варианта 1-4. Пользователь переходит к следующему вопросу (программа извлекает числа из поля в db (4,4,2,4,1,3)), представляя предыдущий вопрос, отвечают, объявляет номер из текущего вопроса в строку и обновляет поле в db (4 , 4,2,4,1,3,1) С 50 вопросами в противном случае это будет 50+ столбцов в таблице для ответов.

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