Toon posts:

[MySQL] array opslaan in mysql

Pagina: 1
Acties:
  • 108 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
is het mogelijk om ene array op te slaan in mySQL, is hier een datatype voor beschikbaar?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Enumeration?

ENUM() ?

http://www.mysql.com/docu...anual_Reference.html#ENUM

Maar je kunt het ook zelf 'imploden' natuurlijk en in een varchar/text veld plaatsen.

[ Voor 93% gewijzigd door Bosmonster op 16-12-2002 13:42 ]


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

je zoekt: serialize() en unserialize()

[ Voor 5% gewijzigd door thomaske op 16-12-2002 13:52 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*



Das eigenlijk nog wel de beste optie.. als je geen ENUM zou gebruiken..

[ Voor 15% gewijzigd door Bosmonster op 16-12-2002 14:05 ]


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Idd gewoon een TEXT/BLOB field maken voor je array en dan serialize() e.d. gebruiken. Houd er wel rekening mee dat serialize _erg_ inefficient is. Probleem is namelijk dat serialize werkt voor zo goed als alle variabelen die je kan bedenken in PHP, dat geeft dus een zooi overhead.

Als je een simpel arraytje als
$bla = array(1, 3, 5, 7, 11);
op wilt slaan kan je veel beter implode() en explode() gebruiken, dat is dan veeeeeel efficienter.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Je kan het array ook in een tabel opslaan, compleet genormaliseerd.
Dan kan je er ook nog allerlei leuke analyses over loslaten.
Volgens mij kan je bij serialize niet vanuit SQL in de inhoud van het array kijken.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Lijkt mij idd een betere oplossing. Je beperkt jezelf behoorlijk als je het als een varchar oid op gaat slaan.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 16 December 2002 @ 13:40:
is het mogelijk om ene array op te slaan in mySQL, is hier een datatype voor beschikbaar?

Datatype daarvoor heet gewoon "tabel" ;)

Zie verder wat goodylover en drm al roepen.

  • kenneth
  • Registratie: September 2001
  • Niet online

kenneth

achter de duinen

Grappig dat er een MySQL vraag wordt gesteld, en allemaal PHP-antwoorden worden gegeven ;)

Of ligt het nu aan mij :?

Look, runners deal in discomfort. After you get past a certain point, that’s all there really is. There is no finesse here.


  • EL_Loco
  • Registratie: Oktober 2001
  • Laatst online: 08-11-2023

EL_Loco

alias Haco

mithalph schreef op 16 december 2002 @ 16:02:
Grappig dat er een MySQL vraag wordt gesteld, en allemaal PHP-antwoorden worden gegeven ;)

Of ligt het nu aan mij :?
hoe wou jij een array invoeren met alleen maar mysql :? :> ;)

rumores non hiatus dremelunt
malleo omnia consentiunt
Lid van het Anti-Jamba front!


  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
nee, ligt aan de topistarter :D

Soms is het niet handig om alles in een MySQL table te gooien en dan gebruik je dingen als explode/implode en (un)serialize() :D

Maar idd, het is natuurlijk VEEEL netter om je PHP array in een table te gooien. Ik ging er echter van uit dat de topic starter niet zo heel erg super mega noob was :D (of ja, daar hoopte ik op ;)).

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Het is niet zozeer netter of slechter, maar meer afhankelijk van wat je wilt.
Als je een soort dump van een systeem op een bepaald moment wilt maken, kan het opslaan in een BLOB wat mij betreft prima, bedenk de consequentie's.

er is in mijn visie niet 1 oplossing voor alles. Weet waarom iets op een bepaalde manier oplost, dan weet je ook wanneer je goed of fout bezig bent

Verwijderd

Ik denk dat het helemaal vies is om een serialize() te gebruiken. Ok, het werkt wel, maar je krijgt allemaal rare crap in je database waar enkel php mee kan omgaan. Wat ik zou doen (misschien een beetje omslachtig), is een extra tabel maken met hierin en vreemde sleutel naar je hoofdtabel. Dat is nog veel efficienter..

Verwijderd

Owja, dit is onzin. Enum word gebruikt om een keuze te maken uit een aantal waardes, het is geen datatype waarmee je een array kan opslaan. Het is eerder een type waarbij je uit een- van tevoren gekozen array- waardes kan kiezen.

[ Voor 20% gewijzigd door Verwijderd op 17-12-2002 09:32 ]


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

sKiLL4:
Owja, dit is onzin. Enum word gebruikt om een keuze te maken uit een aantal waardes, het is geen datatype waarmee je een array kan opslaan. Het is eerder een type waarbij je uit een- van tevoren gekozen array- waardes kan kiezen.
Da's natuurlijk maar net hoe je de vraag van de topicstarter interpreteert ;)

Ennuh.... Afbeeldingslocatie: http://images.tweakers.net/forum/templates/got/images/icons/edit.gif ;)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Verwijderd schreef op 17 December 2002 @ 09:32:
[...]

Owja, dit is onzin. Enum word gebruikt om een keuze te maken uit een aantal waardes, het is geen datatype waarmee je een array kan opslaan. Het is eerder een type waarbij je uit een- van tevoren gekozen array- waardes kan kiezen.


Je hebt gelijk.. SET is het type voor meerdere waarden (eventueel array), al ben je nog verplicht deze bij creatie op te geven. ENUM is voor een enkele waarde met beperkte mogelijkheid.

Eerlijk gezegd gebruik ik beiden nooit.. Voor SET zou ik of een losse tabel maken of mogelijk serialize() gebruiken (of als het toch een array is, dan is een implode() een stuk sneller). Voor ENUM gebruik ik eigenlijk altijd eigen waardes of een tinyint ofzo (ga geen enum("ja","nee") ofzo gebruiken, dan liever een tinyint(1) op 0 of 1) :)

Maar misschien dat ik het nut er nog eens van ga inzien :)

[ Voor 42% gewijzigd door Bosmonster op 17-12-2002 11:07 ]


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Verwijderd schreef op 17 december 2002 @ 09:29:
Ik denk dat het helemaal vies is om een serialize() te gebruiken. Ok, het werkt wel, maar je krijgt allemaal rare crap in je database waar enkel php mee kan omgaan. Wat ik zou doen (misschien een beetje omslachtig), is een extra tabel maken met hierin en vreemde sleutel naar je hoofdtabel. Dat is nog veel efficienter..
Hoezo?

Ik kan wel een aantal mogelijkheden bedenken waarbij het handig is. Denk bv maar aan Session handlers of zo.

Programmer - an organism that turns coffee into software.


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Bosmonster:
Maar misschien dat ik het nut er nog eens van ga inzien :)

Mja, ik vind enum('true','false') toch intuitief een stuk lekkerder werken dan een tinyint op 0 of 1. plus dat je de constraints in je tabel door zijn definitie kan zetten, ajbwib... Een tinyint kan tenslotte op 0 of 1 staan, maar ook op 123....

Overigens is tinyint(1) een fabeltje in MySQL. Probeer maar eens een tinyint(1) op 100 te zetten....

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • Apollo_Futurae
  • Registratie: November 2000
  • Niet online
drm schreef op 17 December 2002 @ 13:15:
Overigens is tinyint(1) een fabeltje in MySQL. Probeer maar eens een tinyint(1) op 100 te zetten....
mysql.com:
As an extension to the ANSI/ISO SQL92 standard, MySQL also supports the integer types TINYINT, MEDIUMINT, and BIGINT as listed in the tables above. Another extension is supported by MySQL for optionally specifying the display width of an integer value in parentheses following the base keyword for the type (for example, INT(4)). This optional width specification is used to left-pad the display of values whose width is less than the width specified for the column, but does not constrain the range of values that can be stored in the column, nor the number of digits that will be displayed for values whose width exceeds that specified for the column.

Pas de replâtrage, la structure est pourrie.

Pagina: 1