I was wondering why, in the following script, it will not run when I place the prepare outside of the loop and put in $uwind[$i] and $vwind[$i] for the place holders in the values part?
This script works:
open(FILE, $filename) or die "$!";
@uwind = <FILE>;
$filename =~ s/u.txt/v.txt/;
open(FILE, $filename) or die "$!";
@vwind = <FILE>;
for ($y=-4612.566; $y<=4300; $y=$y+32.463) {
for ($x=-5632.668; $x<=5600; $x=$x+32.463) {
$id= $id + 1;
$i = $i + 1;
$sth=$dbh->prepare
("INSERT INTO 10m (ID, DATE, TIME, LATITUDE, LONGITUDE, X, Y, U, V, RESULTANT, VARIANCE_RESULTANT, ANGLE, VARIANCE_ANGLE)
VALUES ($id, '$date', '$hour', ?, ?, ?, ?, $uwind[$i], $vwind[$i], ?, ?, ?, ?)");
if ($uwind[$i] < 100 && $vwind[$i] < 100) {
$rho = sqrt($x*$x + ($rhozero - $y)*($rhozero - $y));
$theta = atan2($x,($rhozero - $y));
$lat = (2*atan(($R*$F/$rho)**(1/$N)) - $pi/2) * $degs;
$longi = (($theta/$N) * $degs) + $lambda0;
$resultant = sqrt($uwind[$i]**2 + $vwind[$i]**2);
$angle = (atan2($vwind[$i],$uwind[$i])) * $degs;
if ($angle<0) {
$angle=$angle + 360;
}
$variance_speed = 0;
$variance_angle = 0;
$sth->execute ($lat, $longi, $x, $y, $resultant, $variance_speed, $angle, $variance_angle) || die "Couldn't insert record : $DBI::errstr";
}
}
}
This script won't work! It comes up with the error:
DBD::mysql::st execute failed: Data truncated for column 'U' at row 1 at line 93,
Couldn't insert record : Data truncated for column 'U' at row 1 at line 93, <FILE>
open(FILE, $filename) or die "$!";
@uwind = <FILE>;
$filename =~ s/u.txt/v.txt/;
open(FILE, $filename) or die "$!";
@vwind = <FILE>;
$sth=$dbh->prepare
("INSERT INTO 10m (ID, DATE, TIME, LATITUDE, LONGITUDE, X, Y, U, V, RESULTANT, VARIANCE_RESULTANT, ANGLE, VARIANCE_ANGLE)
VALUES (?, '$date', '$hour', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
for ($y=-4612.566; $y<=4300; $y=$y+32.463) {
for ($x=-5632.668; $x<=5600; $x=$x+32.463) {
$id= $id + 1;
$i = $i + 1;
if ($uwind[$i] < 100 && $vwind[$i] < 100) {
$rho = sqrt($x*$x + ($rhozero - $y)*($rhozero - $y));
$theta = atan2($x,($rhozero - $y));
$lat = (2*atan(($R*$F/$rho)**(1/$N)) - $pi/2) * $degs;
$longi = (($theta/$N) * $degs) + $lambda0;
$resultant = sqrt($uwind[$i]**2 + $vwind[$i]**2);
$angle = (atan2($vwind[$i],$uwind[$i])) * $degs;
if ($angle<0) {
$angle=$angle + 360;
}
$variance_speed = 0;
$variance_angle = 0;
$sth->execute ($id, $lat, $longi, $x, $y, $uwind[$i], $vwind[$i], $resultant, $variance_speed, $angle, $variance_angle) || die "Couldn't insert record : $DBI::errstr";
}
}
}
This script works:
open(FILE, $filename) or die "$!";
@uwind = <FILE>;
$filename =~ s/u.txt/v.txt/;
open(FILE, $filename) or die "$!";
@vwind = <FILE>;
for ($y=-4612.566; $y<=4300; $y=$y+32.463) {
for ($x=-5632.668; $x<=5600; $x=$x+32.463) {
$id= $id + 1;
$i = $i + 1;
$sth=$dbh->prepare
("INSERT INTO 10m (ID, DATE, TIME, LATITUDE, LONGITUDE, X, Y, U, V, RESULTANT, VARIANCE_RESULTANT, ANGLE, VARIANCE_ANGLE)
VALUES ($id, '$date', '$hour', ?, ?, ?, ?, $uwind[$i], $vwind[$i], ?, ?, ?, ?)");
if ($uwind[$i] < 100 && $vwind[$i] < 100) {
$rho = sqrt($x*$x + ($rhozero - $y)*($rhozero - $y));
$theta = atan2($x,($rhozero - $y));
$lat = (2*atan(($R*$F/$rho)**(1/$N)) - $pi/2) * $degs;
$longi = (($theta/$N) * $degs) + $lambda0;
$resultant = sqrt($uwind[$i]**2 + $vwind[$i]**2);
$angle = (atan2($vwind[$i],$uwind[$i])) * $degs;
if ($angle<0) {
$angle=$angle + 360;
}
$variance_speed = 0;
$variance_angle = 0;
$sth->execute ($lat, $longi, $x, $y, $resultant, $variance_speed, $angle, $variance_angle) || die "Couldn't insert record : $DBI::errstr";
}
}
}
This script won't work! It comes up with the error:
DBD::mysql::st execute failed: Data truncated for column 'U' at row 1 at line 93,
Couldn't insert record : Data truncated for column 'U' at row 1 at line 93, <FILE>
open(FILE, $filename) or die "$!";
@uwind = <FILE>;
$filename =~ s/u.txt/v.txt/;
open(FILE, $filename) or die "$!";
@vwind = <FILE>;
$sth=$dbh->prepare
("INSERT INTO 10m (ID, DATE, TIME, LATITUDE, LONGITUDE, X, Y, U, V, RESULTANT, VARIANCE_RESULTANT, ANGLE, VARIANCE_ANGLE)
VALUES (?, '$date', '$hour', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
for ($y=-4612.566; $y<=4300; $y=$y+32.463) {
for ($x=-5632.668; $x<=5600; $x=$x+32.463) {
$id= $id + 1;
$i = $i + 1;
if ($uwind[$i] < 100 && $vwind[$i] < 100) {
$rho = sqrt($x*$x + ($rhozero - $y)*($rhozero - $y));
$theta = atan2($x,($rhozero - $y));
$lat = (2*atan(($R*$F/$rho)**(1/$N)) - $pi/2) * $degs;
$longi = (($theta/$N) * $degs) + $lambda0;
$resultant = sqrt($uwind[$i]**2 + $vwind[$i]**2);
$angle = (atan2($vwind[$i],$uwind[$i])) * $degs;
if ($angle<0) {
$angle=$angle + 360;
}
$variance_speed = 0;
$variance_angle = 0;
$sth->execute ($id, $lat, $longi, $x, $y, $uwind[$i], $vwind[$i], $resultant, $variance_speed, $angle, $variance_angle) || die "Couldn't insert record : $DBI::errstr";
}
}
}