从PHP更新mysql仅在第二次尝试时工作

时间:2018-01-22 03:56:41

标签: php forms file upload

我被困住了,我无法弄清楚发生了什么。我点击浏览按钮并选择一个CSV文件,我点击上传文件并获得失败的消息“无效的文件类型”。我再次点击浏览按钮并选择相同的文件,它第二次工作。 有人能告诉我问题在哪里吗?

<?php
//ini_set('display_errors',1);
//error_reporting(E_ALL);
$servername = "localhost";
$username = "myuser";
$password = "mypassword";
$dbname = "mydb";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}   

if(isset($_POST['submit']))
{
     $fname = $_FILES['sel_file']['name'];
     //echo 'upload file name: '.$fname.' ';
     $chk_ext = explode(".",$fname);

     if(strtolower(end($chk_ext)) == "csv")
     {

         $filename = $_FILES['sel_file']['tmp_name'];
         $handle = fopen($filename, "r");
         mysqli_query($conn, 'TRUNCATE TABLE custstatements;');
         while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)
         {
            if ($data[2] != 'Customer No' and $data[2] >''){
                $sql = "INSERT into custstatements(custNum, field1, field2, invNum, custPo, refNum, amount, payment, balance) values('$data[2]','$data[5]','$data[7]','$data[6]','$data[9]','$data[10]','$data[12]','$data[13]','$data[14]')";
                if (!mysqli_query($conn, $sql)) {
                    echo "Error updating record: " . mysqli_error($conn);
                }   
            }

         }
        mysqli_query($conn,"UPDATE custstatements SET invoiceDate = STR_TO_DATE(field1, '%m/%d/%Y'), invDueDate = STR_TO_DATE(field2, '%m/%d/%Y') ");
        mysqli_close($conn);
        header('Location: index.php');          
     }
     else
     {
       echo "Invalid File type only a CSV file can be imported.";
     }  
}

?>
<!DOCTYPE html>
<html>
<head>
    <title>Statement Data Upload</title>
    <link rel="stylesheet" href="css/style.css"> 
</head>
<body>
<div class="wrapper">
<a href="index.php" title="Home"><img src="images/logo-deville.svg"></a>
<div class="headder"><h1>STATEMENTS DATA UPLOAD</h1><hr>
</div>

<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post" enctype="multipart/form-data">
Select CSV file to upload:
<input type="file" name="sel_file">
<input type="submit" value="Upload File" name="submit">
</form>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

尝试将文件检查器更改为:

$checker=  array('csv');
$fileToUpload= $_FILES['self_file']['name'];
$myFile= pathinfo($fileToUpload, PATHINFO_EXTENSION);

if(in_array($myFile,$checker) ) {
   // upload here
}