Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re: Perl array into MySQL Database

by perldeveloper (Scribe)
on Jul 21, 2004 at 14:18 UTC ( [id://376248]=note: print w/replies, xml ) Need Help??

in reply to Perl array into MySQL Database

If it's an array of strings and the database doesn't support array-typed fields, you could try to create a new table ELEMENTS_TABLE(ID, ELEMENT) which lists all values associated with an ID in the main database, where ID is a FK to the main table. You can retrieve all values associated with the ID by running SELECT ELEMENT FROM ELEMENTS_TABLE WHERE ID=..., the only problem being that the ordering in the original array is not necessarily preserved. To enforce ordering, you'd need to add an extra column (say INDEX) and add ORDER BY INDEX in your select statement. This actually is the only way to do it if the strings can contain basically anything, making it improbable to split by a certain character or set of characters.

Then to retrieve all values, you would run something like:
my $sel_array = $dbh->prepare("SELECT ELEMENT FROM ELEMENTS_TABLE WHER +E ID=?"); $sel_array->execute($id); my (@new_array) = map { $_->[0] } @{$sel_array->fetchall_arrayref};

Replies are listed 'Best First'.
Re^2: Perl array into MySQL Database
by sgifford (Prior) on Jul 21, 2004 at 14:55 UTC
    It's not the only way. For example, you could base64 encode each string, then use something that's not base64 as a field seperator, URLEncode each string and use an ampersand, or implement some method for escaping the seperator. Of course, you'd have to decode this after reading the data back in.
      Of course, and many other ways you can ensure safe splitting or conversion of any kind from one field to an array of text. Hoever, it has at least three disadvantages:
      • Takes more data space
      • Takes time to compute the conversion
      • Doesn't take advantage of the underlying relational database

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://376248]
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others about the Monastery: (2)
As of 2024-04-21 17:18 GMT
Find Nodes?
    Voting Booth?

    No recent polls found