skip to Main Content

I am trying to import a csv file inside mysql using a php page.
I have a problem with it being ignored. How can I do to solve it?
I leave the code of the import.php file, thanks in advance.

C:UsersvenicDesktoplinklogo_ariel.png

C:UsersvenicDesktoplinklogo_ariel.png

Andrea

<?php
include_once("db_connect.php");
if(isset($_POST['import_data'])){    
    // validate to check uploaded file is a valid csv file
    $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain');
    if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$file_mimes)){
        if(is_uploaded_file($_FILES['file']['tmp_name'])){   
            $csv_file = fopen($_FILES['file']['tmp_name'], 'r');           
            //fgetcsv($csv_file);            
            // get data records from csv file
            while(($emp_record = fgetcsv($csv_file)) !== FALSE){
                // Check if employee already exists with same email
                $sql_query = "SELECT emp_id, campo_1a, campo_1b, campo_1a_1, campo_1c, campo_2a, campo_2b, campo_3a, campo_3a_1, campo_3b, campo_3c, campo_4a, campo_5a, campo_5b, campo_6a, campo_7a, campo_7b, campo_8a, campo_8b, campo_9a, campo_9b, campo_10a, campo_10b, campo_10a1, campo_10b1, campo_11a, campo_11b, campo_12a, campo_12b, campo_13a, campo_13b, campo_13c, campo_14, campo_15, campo_16, campo_17, campo_18, campo_19, campo_20, campo_21a, campo_21b, campo_21c1, campo_21c2, campo_21c3, campo_21c4, campo_21d, campo_30a, campo_30b, campo_30c, campo_31, campo_32, campo_33, campo_34, campo_35, campo_35_1, campo_36, campo_37, campo_38, campo_39, campo_39_1, campo_40, campo_41, campo_42, campo_43, quantita_d, quantita_e FROM emp WHERE campo_22 = '".$emp_record[1]."'";
                $resultset = mysqli_query($conn, $sql_query) or die("database error:". mysqli_error($conn));
                // if employee already exist then update details otherwise insert new record
                if(mysqli_num_rows($resultset)) {                     
                    $sql_update = "UPDATE emp set campo_1a='".$emp_record[2]."', campo_1b='".$emp_record[3]."', campo_1a_1='".$emp_record[4]."', campo_1c='".$emp_record[5]."', campo_2a='".$emp_record[6]."', campo_2b='".$emp_record[7]."', campo_3a='".$emp_record[8]."', campo_3a_1='".$emp_record[9]."', campo_3b='".$emp_record[10]."', campo_3c='".$emp_record[11]."', campo_3d='".$emp_record[12]."', campo_4a='".$emp_record[13]."', campo_5a='".$emp_record[14]."', campo_5b='".$emp_record[15]."', campo_6a='".$emp_record[16]."', campo_6b='".$emp_record[17]."', campo_7a='".$emp_record[18]."', campo_7b='".$emp_record[19]."', campo_8a='".$emp_record[20]."', campo_8b='".$emp_record[21]."', campo_9a='".$emp_record[22]."', campo_9b='".$emp_record[23]."', campo_10a='".$emp_record[24]."', campo_10b='".$emp_record[25]."', campo_10a1='".$emp_record[26]."', campo_10b1='".$emp_record[27]."', campo_11a='".$emp_record[28]."', campo_11b='".$emp_record[29]."', campo_12a='".$emp_record[30]."', campo_12b='".$emp_record[31]."', campo_13a='".$emp_record[32]."', campo_13b='".$emp_record[33]."', campo_13c='".$emp_record[34]."', campo_14='".$emp_record[35]."', campo_15='".$emp_record[36]."', campo_16='".$emp_record[37]."', campo_17='".$emp_record[38]."', campo_18='".$emp_record[39]."', campo_19='".$emp_record[40]."', campo_20='".$emp_record[41]."', campo_21a='".$emp_record[42]."', campo_21b='".$emp_record[43]."', campo_21c1='".$emp_record[44]."', campo_21c2='".$emp_record[45]."', campo_21c3='".$emp_record[46]."', campo_21c4='".$emp_record[47]."', campo_21d='".$emp_record[48]."', campo_30a='".$emp_record[49]."', campo_30b='".$emp_record[50]."', campo_30c='".$emp_record[51]."', campo_31='".$emp_record[52]."', campo_32='".$emp_record[53]."', campo_33='".$emp_record[54]."', campo_34='".$emp_record[55]."', campo_35='".$emp_record[56]."', campo_35_1='".$emp_record[57]."', campo_36='".$emp_record[58]."', campo_37='".$emp_record[59]."', campo_38='".$emp_record[60]."', campo_39='".$emp_record[61]."', campo_39_1='".$emp_record[62]."', campo_40='".$emp_record[63]."', campo_41='".$emp_record[64]."', campo_42='".$emp_record[65]."', campo_43='".$emp_record[66]."', quantita_d='".$emp_record[67]."', quantita_e='".$emp_record[68]."' WHERE campo_22 = '".$emp_record[1]."'";
                    mysqli_query($conn, $sql_update) or die("database error:". mysqli_error($conn));
                } else{
                    $mysql_insert = "INSERT INTO emp (campo_22, campo_1a,  campo_1a_1, campo_1b, campo_1c, campo_2a, campo_2b, campo_3a, campo_3a_1, campo_3b, campo_3c, campo_3d, campo_4a, campo_5a, campo_5b, campo_6a, campo_6b, campo_7a, campo_7b, campo_8a, campo_8b, campo_9a, campo_9b, campo_10a, campo_10b, campo_10a1, campo_10b1, campo_11a, campo_11b, campo_12a, campo_12b, campo_13a, campo_13b, campo_13c, campo_14, campo_15, campo_16, campo_17, campo_18, campo_19, campo_20, campo_21a, campo_21b, campo_21c1, campo_21c2, campo_21c3, campo_21c4, campo_21d, campo_30a, campo_30b, campo_30c, campo_31, campo_32, campo_33, campo_34, campo_35, campo_35_1, campo_36, campo_37, campo_38, campo_39, campo_39_1, campo_40, campo_41, campo_42, campo_43, quantita_d, quantita_e)VALUES('".$emp_record[1]."', '".$emp_record[2]."', '".$emp_record[3]."', '".$emp_record[4]."', '".$emp_record[5]."', '".$emp_record[6]."', '".$emp_record[7]."', '".$emp_record[8]."', '".$emp_record[9]."', '".$emp_record[10]."', '".$emp_record[11]."', '".$emp_record[12]."', '".$emp_record[13]."', '".$emp_record[14]."', '".$emp_record[15]."', '".$emp_record[16]."', '".$emp_record[17]."', '".$emp_record[18]."', '".$emp_record[19]."', '".$emp_record[20]."', '".$emp_record[21]."', '".$emp_record[22]."', '".$emp_record[23]."', '".$emp_record[24]."', '".$emp_record[25]."', '".$emp_record[26]."', '".$emp_record[27]."', '".$emp_record[28]."', '".$emp_record[29]."', '".$emp_record[30]."', '".$emp_record[31]."', '".$emp_record[32]."', '".$emp_record[33]."', '".$emp_record[34]."', '".$emp_record[35]."', '".$emp_record[36]."', '".$emp_record[37]."', '".$emp_record[38]."', '".$emp_record[39]."', '".$emp_record[40]."', '".$emp_record[41]."', '".$emp_record[42]."', '".$emp_record[43]."', '".$emp_record[44]."', '".$emp_record[45]."', '".$emp_record[46]."', '".$emp_record[47]."', '".$emp_record[48]."', '".$emp_record[49]."', '".$emp_record[50]."', '".$emp_record[51]."', '".$emp_record[52]."', '".$emp_record[53]."', '".$emp_record[54]."', '".$emp_record[55]."', '".$emp_record[56]."', '".$emp_record[57]."', '".$emp_record[58]."', '".$emp_record[59]."', '".$emp_record[60]."', '".$emp_record[61]."', '".$emp_record[62]."', '".$emp_record[63]."', '".$emp_record[64]."', '".$emp_record[65]."', '".$emp_record[66]."', '".$emp_record[67]."', '".$emp_record[68]."')";
                    mysqli_query($conn, $mysql_insert) or die("database error:". mysqli_error($conn));
                }
            }            
            fclose($csv_file);
            $import_status = '?import_status=success';
        } else {
            $import_status = '?import_status=error';
        }
    } else {
        $import_status = '?import_status=invalid_file';
    }
}
header("Location: index.php".$import_status);
?>

2

Answers


  1. Backslashesin your CSV file are being ignored when you try to import it into MySQL using PHP. This is likely due to the fact that backslashes are used as escape characters in PHP strings, and therefore they are being interpreted as such.

       // get data records from csv file
       while(($emp_record = fgetcsv($csv_file)) !== FALSE){
          // Escape backslashes in the CSV data
          foreach ($emp_record as &$value) {
            $value = addslashes($value);
          }
       // Check if employee already exists with same email
    
    Login or Signup to reply.
  2. You should prepare a parameterised query and then bind values to that query.

    This has a number of benefits,

    1. you protect from SQL Injection.
    2. You get odd data like names Peter O'Toole and C: handled safely automatically.
    3. You can prepare a query ONCE and then reuse it in a loop with different data applied each time it is executed. This means you reduce the number of trips to and from the server and the amount of effort the server has to apply to running your queries
    <?php
    include_once("db_connect.php");
    
    if(isset($_POST['import_data'])){    
        // validate to check uploaded file is a valid csv file
        $file_mimes = array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain');
        if(!empty($_FILES['file']['name']) && in_array($_FILES['file']['type'],$file_mimes)){
            if(is_uploaded_file($_FILES['file']['tmp_name'])){   
                $csv_file = fopen($_FILES['file']['tmp_name'], 'r');           
    
                // prepare the 2 statements, only once, run them multiple times
                // this reduces round trips to the server and makes everything a bit faster
    
                $sql = "UPDATE emp 
                            set campo_1a = ?, campo_1b= ?, campo_1a_1= ?, campo_1c = ?, 
                                campo_2a = ?, campo_2b = ?, campo_3a = ?, campo_3a_1 = ?, 
                                campo_3b = ?, campo_3c = ?, campo_3d = ?, campo_4a = ?, 
                                campo_5a = ?, campo_5b = ?, campo_6a = ?, campo_6b = ?, 
                                campo_7a = ?, campo_7b = ?, campo_8a = ?, campo_8b = ?, 
                                campo_9a = ?, campo_9b = ?, campo_10a = ?, campo_10b = ?, 
                                campo_10a1 = ?, campo_10b1 = ?, campo_11a = ?, campo_11b = ?, 
                                campo_12a = ?, campo_12b = ?, campo_13a = ?, campo_13b = ?, 
                                campo_13c = ?, campo_14 = ?, campo_15 = ?, campo_16 = ?, 
                                campo_17 = ?, campo_18 = ?, campo_19 = ?, campo_20 = ?, 
                                campo_21a = ?, campo_21b = ?, campo_21c1 = ?, campo_21c2= ?, 
                                campo_21c3 = ?, campo_21c4 = ?, campo_21d = ?, campo_30a = ?, 
                                campo_30b= ?, campo_30c = ?, campo_31 = ?, campo_32= ?, 
                                campo_33 = ?, campo_34 = ?, campo_35 = ?, campo_35_1 = ?, 
                                campo_36 = ?, campo_37 = ?, campo_38 = ?, campo_39 = ?, 
                                campo_39_1 = ?, campo_40 = ?, campo_41 = ?, campo_42= ?, 
                                campo_43 = ?, quantita_d = ?, quantita_e = ?
                        WHERE campo_22 = ?";
                $update_stmt = $conn->prepare($sql);
                
                $sql = "INSERT INTO emp 
                        (campo_22, campo_1a,  campo_1a_1, campo_1b, campo_1c, campo_2a, 
                        campo_2b, campo_3a, campo_3a_1, campo_3b, campo_3c, campo_3d, campo_4a, 
                        campo_5a, campo_5b, campo_6a, campo_6b, campo_7a, campo_7b, campo_8a, 
                        campo_8b, campo_9a, campo_9b, campo_10a, campo_10b, campo_10a1, campo_10b1, 
                        campo_11a, campo_11b, campo_12a, campo_12b, campo_13a, campo_13b, campo_13c, 
                        campo_14, campo_15, campo_16, campo_17, campo_18, campo_19, campo_20, 
                        campo_21a, campo_21b, campo_21c1, campo_21c2, campo_21c3, campo_21c4, 
                        campo_21d, campo_30a, campo_30b, campo_30c, campo_31, campo_32, campo_33, 
                        campo_34, campo_35, campo_35_1, campo_36, campo_37, campo_38, campo_39, 
                        campo_39_1, campo_40, campo_41, campo_42, campo_43, quantita_d, quantita_e)
                    VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,
                            ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    
                $insert_stmt = $conn->prepare($sql);
    
    
                while(($emp_record = fgetcsv($csv_file)) !== FALSE){
                    // Check if employee already exists with same email
                    $sql = "SELECT COUNT(campo_22) as cnt FROM emp WHERE campo_22 = ?";
                    $check = $conn->prepare($sql);
                    $check->bind_param('s', $emp_record[1]);
                    $check->execute();
                    $cnt = $check->get_result()->fetch_row()[0];
                    
                    // if employee already exist then update details otherwise insert new record
                    if($cnt = 1) {  
                        // UPDATE existng row 67 columns
                        $update_stmt->bind_param('sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss',
                                    $emp_record[2], $emp_record[3], $emp_record[4], $emp_record[5], 
                                    $emp_record[6], $emp_record[7], $emp_record[8], $emp_record[9], 
                                    $emp_record[10], $emp_record[11], $emp_record[12], $emp_record[13], 
                                    $emp_record[14], $emp_record[15], $emp_record[16], $emp_record[17], 
                                    $emp_record[18], $emp_record[19], $emp_record[20], $emp_record[21], 
                                    $emp_record[22], $emp_record[23], $emp_record[24], $emp_record[25], 
                                    $emp_record[26], $emp_record[27], $emp_record[28], $emp_record[29], 
                                    $emp_record[30], $emp_record[31], $emp_record[32], $emp_record[33], 
                                    $emp_record[34], $emp_record[35], $emp_record[36], $emp_record[37], 
                                    $emp_record[38], $emp_record[39], $emp_record[40], $emp_record[41], 
                                    $emp_record[42], $emp_record[43], $emp_record[44], $emp_record[45], 
                                    $emp_record[46], $emp_record[47], $emp_record[48], $emp_record[49], 
                                    $emp_record[50], $emp_record[51], $emp_record[52], $emp_record[53],
                                    $emp_record[54], $emp_record[55], $emp_record[56], $emp_record[57], 
                                    $emp_record[58], $emp_record[59], $emp_record[60], $emp_record[61], 
                                    $emp_record[62], $emp_record[63], $emp_record[64], $emp_record[65], 
                                    $emp_record[66], $emp_record[67], $emp_record[68], $emp_record[1]";
                        $update_stmt->execute();
                        
                    } else{
                        $insert_stmt->bind_param('sssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss',
                                    $emp_record[1],
                                    $emp_record[2], $emp_record[3], $emp_record[4], $emp_record[5], 
                                    $emp_record[6], $emp_record[7], $emp_record[8], $emp_record[9], 
                                    $emp_record[10], $emp_record[11], $emp_record[12], $emp_record[13], 
                                    $emp_record[14], $emp_record[15], $emp_record[16], $emp_record[17], 
                                    $emp_record[18], $emp_record[19], $emp_record[20], $emp_record[21], 
                                    $emp_record[22], $emp_record[23], $emp_record[24], $emp_record[25], 
                                    $emp_record[26], $emp_record[27], $emp_record[28], $emp_record[29], 
                                    $emp_record[30], $emp_record[31], $emp_record[32], $emp_record[33], 
                                    $emp_record[34], $emp_record[35], $emp_record[36], $emp_record[37], 
                                    $emp_record[38], $emp_record[39], $emp_record[40], $emp_record[41], 
                                    $emp_record[42], $emp_record[43], $emp_record[44], $emp_record[45], 
                                    $emp_record[46], $emp_record[47], $emp_record[48], $emp_record[49], 
                                    $emp_record[50], $emp_record[51], $emp_record[52], $emp_record[53],
                                    $emp_record[54], $emp_record[55], $emp_record[56], $emp_record[57], 
                                    $emp_record[58], $emp_record[59], $emp_record[60], $emp_record[61], 
                                    $emp_record[62], $emp_record[63], $emp_record[64], $emp_record[65], 
                                    $emp_record[66], $emp_record[67], $emp_record[68]";                  
                     $insert_stmt->execute();
                    }
                    
                }            
                fclose($csv_file);
                $import_status = '?import_status=success';
            } else {
                $import_status = '?import_status=error';
            }
        } else {
            $import_status = '?import_status=invalid_file';
        }
    }
    header("Location: index.php".$import_status);
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search