запис на array в MySQL

8 отговора 382 прегледа
#1

запис на array в MySQL

Искам да вкарам стоиностите на масив например interest[1], interest[2], interest[3] в MySQL, но всичко да се запише в една клетка, не в отделни клетки и колони.Много ще се радвам някой ако ми помогне, мерси предварително

Отговор
в отговор на toto #2

Re: запис на array в MySQL

mysql_query("insert into table (field) values ('".implode(",",$array)."')");

root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Отговор
в отговор на ro6avia #3

Re: запис на array в MySQL

И какво ще се случи ако в някой от елементите на масива има запетая, например interest[1] = "mysql, php, odbc". При explode() ще стане интересно.

Използвай serialize():

$myArray = serialize($interest);
INSERT INTO your_table (interest_field) VALUES ('$myArray')

За да възстановиш после обратно масива, използвай обратната функция unserialize():

$interest = unserialize($myArray);

Успех.

Редактирано от mr.vain на

Отговор
в отговор на mr.vain #4

Re: запис на array в MySQL

то хубуу, само дето ако решиш да търсиш по нещо от това поле - няма как да го направиш...
аз лично практикувам използването на разделител, за който съм сигурен, че го няма като символ в никой от елементите на масива (това си е ограничение все пак, като ако масива ми е (1, 2, 3), а разделителя да речем ~, записвам в полето следното: ~1~2~3~, като ако търся примерно после за съвпадение по "2", използвам:
select * from table where array_field like ("%~2~%")

Just a genius

Отговор
в отговор на Blake #5

Re: запис на array в MySQL

"То хубуу", ама мисля че не си прав. Резултата от serialize на масива представлява просто дълъг низ, в които присъстват всички елементи на масива във вида в който си ги инициализирал.

За пример: при array("MySQL, PHP","ODBC: Access", "Oracle' 9") резултата е:

a:3:{i:0;s:10:"MySQL, PHP";i:1;s:12:"ODBC: Access";i:2;s:9:"Oracle' 9";}

На тоя текстов низ можеш да си му приложиш LIKE и вервай ми - намира каквото търсиш. :)

Успех.

Отговор
в отговор на mr.vain #6

Re: запис на array в MySQL

знам кво представлява сериализиран масив, само че освен че търсенето е дооста по-трудно (ми се струва), информацията която се записва в полето е около 2 пъти по-голяма отколкото оригиналната (в твоя пример)... а в моя - доста повече...

не искам да се караме за глупости, то ясно че конкретната реализация ще зависи от много неща... просто исках да споделя и моя метод :)

Just a genius

Отговор
в отговор на Blake #7

Re: запис на array в MySQL

taka, izpolzwai ENUM ili SET tip w mysql-a za da mojesh posle da tyrsish s mysql finkciata FIND_IN_SET w zaiawkata si.

Отговор
в отговор на mr.vain #8

Re: запис на array в MySQL

Най-сигурно е да се използват chr(1), chr(2), ...За всеки друг символ има вероятност да ес срещне в текст.

Отговор
в отговор на svetla #9

Re: запис на array в MySQL

An ENUM is a string object with a value chosen from a list of allowed values that are enumerated explicitly in the column specification at table creation time.

A SET is a string object that can have zero or more values, each of which must be chosen from a list of allowed values specified when the table is created.

т.е. не стават за динамични масиви (не предварително дефинирани, или такива които се четат/конструират от друга таблица или юзър инпут примерно)

Just a genius

Отговор