запис на array в MySQL
8 отговора
382 прегледа
запис на array в MySQL
Искам да вкарам стоиностите на масив например interest[1], interest[2], interest[3] в MySQL, но всичко да се запише в една клетка, не в отделни клетки и колони.Много ще се радвам някой ако ми помогне, мерси предварително
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
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
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);
Успех.
Използвай serialize():
$myArray = serialize($interest);
INSERT INTO your_table (interest_field) VALUES ('$myArray')
За да възстановиш после обратно масива, използвай обратната функция unserialize():
$interest = unserialize($myArray);
Успех.
Редактирано от mr.vain на
Re: запис на array в MySQL
то хубуу, само дето ако решиш да търсиш по нещо от това поле - няма как да го направиш...
аз лично практикувам използването на разделител, за който съм сигурен, че го няма като символ в никой от елементите на масива (това си е ограничение все пак, като ако масива ми е (1, 2, 3), а разделителя да речем ~, записвам в полето следното: ~1~2~3~, като ако търся примерно после за съвпадение по "2", използвам:
select * from table where array_field like ("%~2~%")
Just a genius
аз лично практикувам използването на разделител, за който съм сигурен, че го няма като символ в никой от елементите на масива (това си е ограничение все пак, като ако масива ми е (1, 2, 3), а разделителя да речем ~, записвам в полето следното: ~1~2~3~, като ако търся примерно после за съвпадение по "2", използвам:
select * from table where array_field like ("%~2~%")
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 и вервай ми - намира каквото търсиш. :)
Успех.
За пример: при 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 и вервай ми - намира каквото търсиш. :)
Успех.
Re: запис на array в MySQL
знам кво представлява сериализиран масив, само че освен че търсенето е дооста по-трудно (ми се струва), информацията която се записва в полето е около 2 пъти по-голяма отколкото оригиналната (в твоя пример)... а в моя - доста повече...
не искам да се караме за глупости, то ясно че конкретната реализация ще зависи от много неща... просто исках да споделя и моя метод :)
Just a genius
не искам да се караме за глупости, то ясно че конкретната реализация ще зависи от много неща... просто исках да споделя и моя метод :)
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.
Re: запис на array в MySQL
Най-сигурно е да се използват chr(1), chr(2), ...За всеки друг символ има вероятност да ес срещне в текст. 
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
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.
т.е. не стават за динамични масиви (не предварително дефинирани, или такива които се четат/конструират от друга таблица или юзър инпут примерно)