- 1
- 2
- 3
- 4
- 5
- 6
$inst = $db->prepare("insert into year_$year (user_name,type_of_day,month_row,day_1,day_2,day_3,day_4,day_5,day_6,day_7,day_8,day_9,
day_10,day_11,day_12,day_13,day_14,day_15,day_16,day_17,day_18,day_19,day_20,day_21,day_22,day_23,day_24,day_25,day_26,day_27,day_28,day_29,day_30,day_31)
values
(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
$inst->execute($chunk_post[$init]);
Оригинал тут http://hashcode.ru/questions/321962/php-mysql-%D0%B2%D1%81%D1%82%D0%B0%D0%B2%D0%BA%D0% B0-%D1%80%D0%B0%D0%B4%D0%BE%D0%BC%D0%BD%D0% BE%D0%B3%D0%BE-%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1% 81%D1%82%D0%B2%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
eth0 22.05.2014 18:35 # 0
guest 23.05.2014 01:27 # +1
bormand 23.05.2014 05:31 # +1
2) по колонке на элемент (как у ОП'а)
3) в одно поле, например через json.dumps(array)
Вроде ничего не забыл.
wvxvw 23.05.2014 09:46 # 0
Если массив из битов, байтов, целых, то можно соответственно числом, блобом, если БД реляционная.
guest 24.05.2014 21:46 # 0
bormand 24.05.2014 21:56 # +1
+ некоторые базы умеют хранить массивы в полях:
http://www.postgresql.org/docs/9.1/static/arrays.html
defecate-plusplus 24.05.2014 23:10 # +1
в Oracle можно в ячейку вообще вложенную таблицу засунуть - nested table
+ встроенный механизм работы с xml
но как по мне - это не тот способ, чтобы расставить признаки для 31 дня месяца
bormand 25.05.2014 08:05 # 0
Ага, здесь лучше всего смотрится "1) по строчке на элемент". И структура простая, и юзать потом легко.
defecate-plusplus 25.05.2014 11:51 # +1
выше локальность, меньше займет места, strpos substr и на стороне БД, и (тем более) на стороне приложения сделать несложно (если вдруг), нет геморроя со слежением за тем, что ты для одной родительской записи хранишь ровно одно 20е число (constraint-то в любом случае понадобится, а вот лочить перед апдейтом лучше 1 строчку, чем 30)
понятное дело, этот подход начинает ломаться, если нам надо вместо 0/1 для каждого дня хранить кучу доп. инфы
Fike 24.05.2014 06:44 # +2