Thread Hash in Datenbank schreiben (4 answers)
Opened by panni at 2015-07-20 12:45

panni
 2015-07-20 12:45
#181629 #181629
User since
2012-02-15
23 Artikel
BenutzerIn
[default_avatar]
Hallo!

Ich habe mir folgenden Hash gebaut (in der Realität hat dieser noch viel mehr Felder) und will diesen gern in eine Datenbank schreiben (ich nutze das DBI-Modul):

Code (perl): (dl )
1
2
3
4
5
$newUser{'username'} = 'Test';
$newUser{'email'} = 'test@test.de';
$newUser{'company'} = 'Firma';
$newUser{'gender'} = 'female';
$newUser{'name'} = 'Tester';


Um nicht eine ewig lange INSERT-Anweisung zu tippen, würde ich diese gern vom Programm zusammenbauen lassen.

Ich habe bis jetzt das.

Code (perl): (dl )
1
2
3
$sql = "INSERT INTO Members (" . join (", ", keys %newUser) . ") VALUES (" . join( ", ", map {'?'} keys %newUser) . ")";
$dbh = $db->prepare($sql);
$dbh->execute();


Nun weiß ich nur nicht, wie ich die Parameter für "$dbh->execute();", sprich die Werte, die in die Tabelle geschrieben werden sollen, übergebe.

Soweit ich das verstanden habe, kann ich mir doch nicht sicher sein, dass die Reihenfolge der Werte dann auch der Reihenfolge der Feldnamen entspricht, oder?
Wenn ich testweise die Daten ausgebe, stimmt die Reihenfolge zwar jedes mal, aber habe ich eine 100%e Sicherheit, dass dem immer so ist?

Sollte ich evtl. besser mit "sort keys %newUser" arbeiten? Und die Daten dann vorher aus dem Hash in ein String extrahieren und diesen an die execute-Methode übergeben. Sowohl für die Keys, wie auch für die Values?

Bin ich da jetzt total auf dem Holzweg und sollte besser doch einen ausführlichen INSERT-Befehl schreiben?
Oder gibt es doch eine Möglichkeit, den INSERT-Befehl flexibel zu gestalten, so dass ich einfach ein HASH bzw. ein Array in eine Datenbank schreiben kann.

Vielen Dank
Last edited: 2015-07-20 13:08:26 +0200 (CEST)

View full thread Hash in Datenbank schreiben