Я наконец получил правильный результат, поэтому мой код в настоящее время выглядит так:
<?php
$conn= mysqli_connect('localhost','admin','admin','database_test');
if (isset($_POST['submit'])){
$createTable="CREATE TABLE Bank_statements(
id INT(3) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
date DATE NOT NULL,
purpose TEXT(100) NOT NULL,
debit FLOAT(255,2) NOT NULL,
kredit FLOAT(255,2) NOT NULL
);";
if (mysqli_query($conn,$createTable)){
$file=fopen($_FILES['file_nkbm']['tmp_name'],"r");
$row=1;
while($data=fgetcsv($file,1000,'~')){
$repl_one=str_replace(',','.',$data);
$repl=preg_replace('/[\x00-\x1F\x7F-\xFF]/','?',$repl_one);
$row++;
if ($row!=2){
foreach($repl as $dat){
$expl=explode(";",$dat);
$convert_date=strtotime($expl[4]);
$date=date('y-m-d',$convert_date);
$debit=doubleval($expl[5]);
$kredit=doubleval($expl[6]);
$purpose=$expl[8];
$addData="INSERT INTO Bank_statements(date,debit,kredit,purpose)
VALUES ('$date','$debit','$kredit','$purpose');";
mysqli_query($conn,$addData);
}
}
}
fclose($_FILES['file_nkbm']['tmp_name']);
$query="SELECT * FROM Bank_statements;";
$result=mysqli_query($conn,$query);
while ($row=mysqli_fetch_array($result)){
echo $row['id'].$row['date'].$row['purpose'].$row['debit'].$row['kredit']."<br>";
}
}else{
echo "table already exist";
}
}
mysqli_close($conn);
?>
с переменной $row
Я решил проблему пропуска первой строки и с str_replace
и preg_replace
i решена проблема с точкой и специальными символами в файле. Но я должен был установить fgetcsv
delimiter на какой-либо символ, отличный от «,», потому что когда программа читала файл, она разбивала одну строку на новый массив при обнаружении «,».