sql >> Database >  >> RDS >> Mysql

Upload CSV naar de database met behulp van php

Hier is de basiscode die je nodig hebt om je taak uit te voeren,

$file = fopen($_FILES['csvUpload']['tmp_name'], "r");
$i = 0;
while (!feof($file)) {
    $value = (fgetcsv($file, 0, ';'));
    if ($i > 0) {
        if ($value[0] != '') {
            $inserts[] = "(" . $value[0] . ","
                    . $value["1"] . ","
                    . $value["2"] . ","
                    . $value["3"] . ","
                    . $value["4"] . ","
                    . $value["5"] . ","
                    . $value["6"] . ")";
        }
    } elseif ($i == 0) {
        $fields = $value;
    }
    $i++;
}

mysql_query("INSERT INTO `MyTable` (`" . $fields[0] . "`,`" . $fields[1] . "`,`" . $fields[2] . "`,`" . $fields[3] . "`,`" . $fields[4] . "`,`" . $fields[5] . "`) VALUES " . implode(",", $inserts));

fclose($file);

U moet validatie implementeren, het bestandstype en de maximale grootte controleren. Voeg vervolgens uw gegevens toe aan de tabel. Ik heb MySQL bulk insert gebruikt om grote hoeveelheden gegevens te verwerken. Ik hoop dat dit helpt!

BEWERK 1:

Vervang uw code door deze code en kijk of deze correct werkt.

<?php
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_WARNING);

mysql_connect('localhost', 'root', '');
mysql_select_db("proyecto") or die(mysql_error());

if (isset($_FILES['csvUpload'])) {
    $errors = array();
    $allowed_ext = array('.csv');

    $file_name = $_FILES['csvUpload']['name'];
    $file_ext = strtolower(end(explode('.', $file_name)));
    $file_size = $_FILES['csvUpload']['size'];
    $file_tmp = $_FILES['csvUpload']['tmp_name'];

    if (in_array($allowed_ext) === false) {
        $errors[] = 'La extensión del archivo no es valida.';
    }
    if ($file_size > 10485760) {
        $errors[] = 'El archivo sobrepasa el limite de 10MB';
    }
    if (empty($errors)) {


        $handle = fopen($file_tmp, "r");
        while (($fileop = fgetcsv($handle, ";") && fgetcsv($handle, ",")) !== false) {
            $cedula = mysql_real_escape_string($fileop[0]);
            $nombre = mysql_real_escape_string($fileop[2]);
            $apellido1 = mysql_real_escape_string($fileop[3]);
            $apellido2 = mysql_real_escape_string($fileop[4]);
            $correo = mysql_real_escape_string($fileop[5]);
            $idRol = mysql_real_escape_string($fileop[6]);
            $estado = mysql_real_escape_string($fileop[9]);


            $sq1 = mysql_query("INSERT INTO `usuarios` (cedula,nombre,apellido1,apellido2,correo,idRol,estado) VALUES ('$cedula','$nombre','$apellido1','$apellido2','$correo','$idRol','$estado')");
        }
        fclose($handle);
        if ($sq1) {
            echo '¡Los usuarios han sido agregados exitosamente!';
        }
    }
}
?>



<form enctype="multipart/form-data" method="post" id="uploadForm">
    <input name="csvUpload" id="upload" type="file" accept=".csv" class="left" />
    <input type="submit" value="¡Cargar!" />
</form>


  1. Hoe FIND_IN_SET() werkt in MariaDB

  2. MYSQL:Hoe vind ik player_id van achternaam?

  3. MySQL-query stoppen na de eerste rij

  4. Er verschijnt een fout in sql bij het toevoegen van meerdere externe sleutels