将文件上传到数据库并检查表中是否存在数据库值

时间:2017-05-31 01:07:17

标签: php mysql sql-server database file-upload

我需要制作将sql文件或csv文件上传到数据库的表单。 如果用户上传example.sql,则所有数据都将上传到数据库中。 我需要检查数据库和表,如果表中的值存在,该值将不会插入到数据库表中。如果不存在,它将上传到数据库表中。我不希望上传的数据与表中的现有数据重复

这是我上传到我的数据库的 Php ,名为ituser_sales,名为site_sales。

if(isset($_FILES['file'])){
    $file = $_FILES['file'];

    //file properties
    $file_name = $file['name'];
    $file_tmp = $file['tmp_name'];
    $file_size = $file['size'];
    $file_error = $file['error'];

    //extension
    $file_ext = explode('.', $file_name);
    $file_ext = strtolower(end($file_ext));
    $actionstatus = "<center><div class=\"alert alert-success\" style=\"max-width: 250px;\">
    <button type=\"button\" class=\"close\" data-dismiss=\"alert\">&times;</button>
    User Update Successful.
    </div></center>";

    $allowed = array('csv', 'sql', 'txt');

    if (in_array($file_ext, $allowed)){
        if($file_error === 0){
            if ($file_size <= 1000000){
                $file_name_new = uniqid('', true) . '.' . $file_ext;
                $file_destination = 'uploads/'.$file_name_new;

                if(move_uploaded_file($file_tmp, $file_destination)){
                    **$query ="LOAD DATA LOCAL INFILE '".$file_destination."' INTO TABLE site_sales
                    FIELDS TERMINATED BY ','
                    IGNORE 1 LINES;**";
                    $result = mysqli_query($con,$query);
                    if ($result){
                        echo $actionstatus;
                        echo "Your file name will be <h4>$file_name_new</h4>";
                    } else {
                        echo '<br><button onclick="goBack()">Go Back</button><br><br>';
                        echo '<script>
                        function goBack() {
                        window.history.back();
                        }
                        </script>';
                        die (mysqli_error());
                        include("includes/footer.php");

                    }

                }
            }
        }
    } else{
        echo "<br>Your file is either none of these extensions (.$allowed[0], .$allowed[1], .$allowed[2]) <br>";
        echo '<br><button onclick="goBack()">Go Back</button><br>';
        echo '<script>
        function goBack() {
        window.history.back();
        }
        </script>';
        die (mysqli_error($con));
        include("includes/footer.php");
    }
}

我需要更改该查询以执行检查表中的值。 以下是我需要上传的数据示例:

sales_id,storenumber,busidate,纯销售,税务,disc_amt,SKVOC,NETAMT,TRNCNT ,1,2018-01-01,9468.82,560.96,0,920,8548.82,212

example.sql中的数据

here is the example in the database (ituser_sales), table (site_sales) after upload the sql file Here is the duplicate example if i upload again

如果值存在,则数据不会复制存在的数据。 查询将读取下一行(新数据)以检查它是否存在,直到sql文件中的最后一个数据

有这个想法吗? 提前谢谢。

0 个答案:

没有答案