Bulk upload data into MySQL with PHP

Viewed 31

I have this bulk upload tool that was working wonderful yesterday. However, when I tried to upload data again, I got these two errors.

Notice: Undefined index: file in /var/www/html/PACT/testcsv.php on line 25

Notice: Trying to access array offset on value of type null in /var/www/html/PACT/testcsv.php on line 25

I don't know what might've triggered these errors as I did not make any changes to the code.

csv.php

$conn = new mysqli('', '', '', '');
session_start();

include '/var/www/php-scripts/hndrx-pact-admins.php';

ini_set('display_errors', '1');
ini_set('display_startup_errors', '1');
error_reporting(E_ALL);

if (!isset($_SESSION['PACT'])) {
    exit;
}

if (!in_array($_SESSION['PACT']['account-name'], $admins)) {
    exit;
}

if (isset($_POST["submit"])) {
    if ($_FILES['file']['name']) {
        $filename = explode(".", $_FILES['file']['name']);
        if ($filename[1] == 'csv') {
            $handle = fopen($_FILES['file']['tmp_name'], "r");
            fgets($handle);
            while ($data = fgetcsv($handle)) {
                $date_added = mysqli_real_escape_string($conn, $data[0]);
                $on_hold_till = mysqli_real_escape_string($conn, $data[1]);
                $item_no = mysqli_real_escape_string($conn, $data[2]);
                $description = mysqli_real_escape_string($conn, $data[3]);
                $total_units = mysqli_real_escape_string($conn, $data[4]);
                $price = mysqli_real_escape_string($conn, $data[5]);
                $avg_cogs = mysqli_real_escape_string($conn, $data[6]);
                $profit = mysqli_real_escape_string($conn, $data[7]);
                $margin = mysqli_real_escape_string($conn, $data[8]);
                $mintage = mysqli_real_escape_string($conn, $data[9]);
                $pop_known = mysqli_real_escape_string($conn, $data[10]);
                $ngc_pop = mysqli_real_escape_string($conn, $data[11]);
                $pcgs_pop = mysqli_real_escape_string($conn, $data[12]);
                $total_pop = mysqli_real_escape_string($conn, $data[13]);
                $finer_known = mysqli_real_escape_string($conn, $data[14]);
                $highlights = mysqli_real_escape_string($conn, $data[15]);
                $vendor = mysqli_real_escape_string($conn, $data[16]);
                $categories = mysqli_real_escape_string($conn, $data[17]);
                $display_y_n = mysqli_real_escape_string($conn, $data[18]);
                $images_y_n = mysqli_real_escape_string($conn, $data[19]);
                >
                $sql = "insert into produx (date_added, on_hold_till, item_no, description, total_units, price, avg_cogs, profit, margin, mintage, pop_known, ngc_pop, pcgs_pop, total_pop, finer_known, highlights, vendor, categories, display_y_n, images_y_n) values ('$date_added', '$on_hold_till', '$item_no', '$description', '$total_units', '$price', '$avg_cogs', '$profit', '$margin', '$mintage', '$pop_known', '$ngc_pop', '$pcgs_pop', '$total_pop', $finer_known', '$highlights', '$vendor', '$categories', '$display_y_n', '$images_y_n')";
                if (mysqli_query($conn, $sql)) {
                    echo '<h2>Record successfuly entered!</h2>';
                } else {
                    printf($conn->error);
                }
            }
            fclose($handle);
            $conn->close();
        }
    }
}

part of my index.php

<div style="line-height: 2; box-shadow: 0 0 5px red inset; padding: 5px 10px; 
    border-radius: 5px; display: inline-block;  margin-bottom: 20px;">
    TESTING:
    <form action="testcsv.php" method="post" enctype="multipart/form-data">
        Upload your <b>BulkUploader</b> file:<br>
        <input type="file" name="BulkUpload" accept=".csv">
        <input type="submit" name="submit" value="submit">
    </form>
</div>
0 Answers
Related