Thread Hexadezimale Werte mit DBI und Prepare in MySQL-Datenbank speichern
(4 answers)
Opened by Pascal at 2010-10-25 15:14
Hallo!
Ich entwickle gerade ein Perl-Skript, das IPv6-Adressen in eine MySQL-Datenbank importiert. Da MySQL jedoch keinen 128bit-Integer bereitstellt, muss ich diese in einem VARBINARY-Feld speichern. Für den Zugriff auf die Datenbank verwende ich das DBI-Modul. Führe ich das entsprechende INSERT-Statement (siehe Beispiel) direkt aus, funktioniert es ohne Probleme: Code (perl): (dl
)
1 2 3 my $sth = $dbh->do("INSERT INTO `accounting` (`IPv6_string`, `IPv6_binary`) VALUES ('fd01:0000:0000:0000:0000:0000:0000:0003', 0xfd010000000000000000000000000003);"); Da das Statement mehrfach mit unterschiedlichen Werten ausgeführt werden soll, ist es natürlich sinnvoll, die Prepare-Funktionalität zu nutzen. Dies habe ich folgendermaßen versucht: Code (perl): (dl
)
1 2 3 4 5 my $sth = $dbh->prepare("INSERT INTO `accounting` (`IPv6_string`, `IPv6_binary`) VALUES (?, ?);"); $sth->bind_param(1, 'fd01:0000:0000:0000:0000:0000:0000:0003'); $sth->bind_param(2, '0xfd010000000000000000000000000003', SQL_VARBINARY); $sth->execute(); Leider wird hierbei der Binärwert des Hex-Strings und nicht der Wert, den der Hex-String darstellt, in der Datenbank gespeichert. Hatt vielleicht jemand eine Idee, wie es trotzdem möglich ist, Statement-Preparation zu verwenden? MfG Pascal Last edited: 2010-10-25 15:17:06 +0200 (CEST) |