Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11932[/thread]

Werte in Datenbank einfügen *war: Zeilenumbruch abfangen



<< |< 1 2 >| >> 14 Einträge, 2 Seiten
Gast Gast
 2008-05-29 12:52
#110438 #110438
Hallo zusammen,

ich lese über den Befehl :

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
my $inhalt2 = qx (check_nrpe20 -H $ARGV[0] -p 5666 -c check_jobmon);

my $query_del = $dbh->prepare("DROP TABLE IF EXISTS job");
my $create_query = "CREATE TABLE job(jobname VARCHAR(20), beschreibung VARCHAR(20), user VARCHAR(12), status int, cdate date, edate date, periodical int)";
my $query_fuellen0 = $dbh->prepare("INSERT INTO job VALUES(?,?,?,?,?,?,?)");
$query_del->execute();
$dbh->do($create_query);

for my $zeile(@inhalt)
{
$query_fuellen0->execute(split /,/, $zeile) or warn $dbh->errstr;
}


eine Textdatei in ein Array ein und schreibe dies dann in die DB, es funktioniert soweit auch.
Jetzt kommt immer diese Fehlermeldung:

DBD::mysql::st execute failed: called with 1 bind variables when 7 are needed at ./check_baan.pl line 67.
called with 1 bind variables when 7 are needed at ./check_baan.pl line 67.


kann mir da jemand weiterhelfen


danke & grüße Olli
GwenDragon
 2008-05-29 12:59
#110440 #110440
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Und wie füllst du @inhalt mit Daten?
renee
 2008-05-29 13:01
#110442 #110442
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Was zeigt denn ein
Code (perl): (dl )
1
2
use Data::Dumper;
print Dumper \@inhalt;
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2008-05-29 13:15
#110444 #110444
hi renee,

es zeigt folgendes an:

$VAR1 = [
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'baan,2007-6-19,Device not found ',
'
'
];


ist ein Array beschränkt was die Größe betrifft?

da Array wird über:
Code: (dl )
my @inhalt = split /;/, qx(check_nrpe20 -H $ARGV[0] -p 5666 -c check_jobinfos); 
gefüllt
GwenDragon
 2008-05-29 14:06
#110445 #110445
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Nein, es gibt fast keine Grenze, außer ein paar Gigabytes ;)

Aber du musst schon dafür sorgen, dass ein Array mit den kompletten und richtigen Daten gefüllt ist.
Du verlässt dich einfach darauf, dass immer 7 Werte zurück kommen!
Das ist falsch wie du siehst.
Du musst prüfen, ob $zeile 7 felder hat; also:

Code: (dl )
1
2
3
4
5
6
7
8
9
for my $zeile(@inhalt) {
my @z = split /,/, $zeile;
if (scalar @z == 7) {
$query_fuellen0->execute(@z) or warn $dbh->errstr;
}
else {
warn("### Daten sind nicht korrekt! $zeile");
}
}


//EDIT: SOrry, für die Vertipper, aber hier sind 34°C und im Zimmer auch 31°C.
GwenDragon
 2008-05-29 15:02
#110446 #110446
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
----
Modedit Gwendragon:
Was hat eigentlich der Titel des Threads mit dem Problem zu tun? Da gehts doch nicht um Zeilenumbrüche!??
----

Titel geändert.
Gast Gast
 2008-05-29 15:42
#110451 #110451
hi,

ja hast du eigentlich recht.
danke für die antwort.

grüße olli
Dubu
 2008-05-30 01:52
#110471 #110471
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Die Fehlermeldung bezieht sich offensichtlich auf das letzte Element des Arrays, das nur einen Zeilenumbruch enthält. (Evtl. fehlt ein chomp() auf $inhalt2, wenn die Daten daher kommen, o.ä.)
Gast Gast
 2008-06-02 18:57
#110631 #110631
hi dubu,

ja ich denke, dass in der letzten Zeile noch ein Zeilenumbruch steht.

Code: (dl )
my @inhalt = split /;/, qx(check_nrpe20 -H $ARGV[0] -p 5666 -c check_jobinfos); 

hier wird das Array gefüllt!

Code: (dl )
1
2
3
4
for my $zeile(@inhalt)
{
$query_fuellen0->execute(split /,/, $zeile) or warn $dbh->errstr;
}

hier werden die einzelnen Datensatze in die DB geschrieben.

Jetzt ist wohl in der letzten Element noch ein Zeilenumbruch, wie bekomme ich den daraus?

danke & gruß Olli
Struppi
 2008-06-03 11:02
#110660 #110660
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Mit chomp
<< |< 1 2 >| >> 14 Einträge, 2 Seiten



View all threads created 2008-05-29 12:52.