Hallo,
Ik heb een script gemaakt om een csv bestand in te lezen naar een mysql database. Na het inlezen moet vervolgens het bestand verplaatst worden. Nou zie ik dat sommige (maar niet alle) records dubbel in de database komen en ik heb geen idee hoe dat kan. Dit is het scipt, hopelijk ziet iemand de fout want ik zie het na uren staren niet meer.
En de csv bestanden zijn gecheckt maar bevatten geen dubbele records en worden goed verplaatst.
Error reporting geeft geen enkele error.
<?php
error_reporting(E_ALL);
error_reporting(-1);
ini_set('error_reporting', E_ALL);
ini_set('error_log', '/var/www/error.log');
//
$tabelnaam = 'testje';
$dir = '/var/www//data/www/bestandjes/dos';
// database connectie maken
$conn = mysqli_connect('localhost','user','pass','data');
if(!$conn)
{
die(mysqli_error());
}
// verander de cwd omdat dit bestand buiten deze map wordt gerunned
chdir ($dir);
// start invoer
foreach (glob("*.csv") as $bestand)
{
$bestandsnaam = fopen($bestand, 'r');
// als dit woord in een regel staat dan skip deze regel (de kolomkoppen wil je niet inserten en daar staat o.a. dit woord in)
$woord = "disconnect_reason";
$woord2 = "Incoming"; // regels waar dit woord in staat willen we niet hebben
while (!feof($bestandsnaam))
{
$getTextLine = fgets($bestandsnaam);
// de laatste regel in de csv bestanden die aangeleverd worden is leeg dus deze niet meenemen anders krijgen we een lege regel in onze tabel
if(empty($getTextLine))
{
continue;
}
// de eerste regel bevat de headers dus die willen we ook niet meenemen in de database, dat doen we door te filteren op de var $woord
elseif (strpos($getTextLine, $woord) !== false)
{
continue;
}
elseif (strpos($getTextLine, $woord2) !== false)
{
continue;
}
else
{
$explodeLine = explode(",",$getTextLine);
list($id,$h323_conf_id,$account_id,$cli,$cld,$connect_time_utc,$disconnect_time_utc,$disconnect_description,$disconnect_reason,$used_quantity,$bit_flags,$bitflags_description) = $explodeLine;
// zet hier de datums format goed
$connect_time_utc_new = date ('Y-m-d H:i:s', strtotime($connect_time_utc));
$disconnect_time_utc_new = date ('Y-m-d H:i:s', strtotime($disconnect_time_utc));
$qry = "INSERT INTO $tabelnaam (idsod, h323_conf_id, account_id, cli, cld, connect_time_utc, disconnect_time_utc, disconnect_description, disconnect_reason, used_quantity, bit_flags, bitflags_description)
VALUES('".$id."','".$h323_conf_id."','".$account_id."','".$cli."','".$cld."','".$connect_time_utc_new."','".$disconnect_time_utc_new."','".$disconnect_description."','".$disconnect_reason."','".$used_quantity."','".$bit_flags."','".$bitflags_description."')";
mysqli_query($conn,$qry);
}
}
// bestand sluiten
fclose($bestandsnaam);
// bestand verplaatsen
rename($bestand, 'verwerkt/'.$bestand.'');
}
?>
1.732 views