Perl mySQL - Probleme bei INSERT mit STRING
Hallo zusammen,
ich lese drei Informationen aus einer Textdatei aus und möchte diese in eine mySQL Datenbank speichern.
Ein Wert ist ein Timestamp im Format YY-MM-DD HH:MM:SS
Diesen Wert habe ich in $arrInfo[$i][4] gespeichert. $i ist die Laufvariable.
my $sql3 = 'INSERT INTO temp (Time,LR,Temp) VALUES ('.$arrInfo[$i][4].','.$LR.','.$arrInfo[$i][3].')';
Alles funktioniert bis auf den Timestamp.
Wie kann ich explizit sagen, dass es sich bei $arrInfo[$i][4] um einen String handelt?
Anstatt der Variable habe ich mal nur 2010-05-01 eingegeben und dann hat er natürlch
den Wert ausgerechnet
Ich glaube, ich sehe den Wald vor lauter Bäumen nicht mehr.
Bin für jeden Tip dankbar.
Gruß
Libor
ich lese drei Informationen aus einer Textdatei aus und möchte diese in eine mySQL Datenbank speichern.
Ein Wert ist ein Timestamp im Format YY-MM-DD HH:MM:SS
Diesen Wert habe ich in $arrInfo[$i][4] gespeichert. $i ist die Laufvariable.
my $sql3 = 'INSERT INTO temp (Time,LR,Temp) VALUES ('.$arrInfo[$i][4].','.$LR.','.$arrInfo[$i][3].')';
Alles funktioniert bis auf den Timestamp.
Wie kann ich explizit sagen, dass es sich bei $arrInfo[$i][4] um einen String handelt?
Anstatt der Variable habe ich mal nur 2010-05-01 eingegeben und dann hat er natürlch
den Wert ausgerechnet
Ich glaube, ich sehe den Wald vor lauter Bäumen nicht mehr.
Bin für jeden Tip dankbar.
Gruß
Libor
Please also mark the comments that contributed to the solution of the article
Content-Key: 164708
Url: https://administrator.de/contentid/164708
Printed on: April 24, 2024 at 07:04 o'clock
3 Comments
Latest comment
my $sql3 = 'INSERT INTO temp (Time,LR,Temp) VALUES ('.$arrInfo[$i][4].','.$LR.','.$arrInfo[$i][3].')';
Und wieder eine SQL-Injection-Lücke...
Auch du darfst dich jetzt erstmal mit diesem Artikel befassen: http://de.wikipedia.org/wiki/SQL-Injection (das war keine Bitte!)
um einen String handelt?
Indem du Anführungszeichen setzt.
Was du schreibst wird ausgewertet zu:
INSERT INTO temp (Time,LR,Temp) VALUES(__wert1__,__wert2__,__wert3__)
Wenn es ein String ist muss es aber ausgewertet werden zu:INSERT INTO temp (Time,LR,Temp) VALUES("__wert1__",__wert2__,__wert3__)
Bitte nicht einfach nur Anführungszeichen benutzen, sondern Platzhalter. Ansonsten ist das immer noch eine SQL-Injection-Lücke. Mehr Informationen zu Platzhaltern sind unter http://wiki.perl-community.de/Wissensbasis/DbiPlatzhalter zu finden.