Inserting file data into a database using a PHP script

Insert file data into a database. In this video I show how to make a script in php to upload data from a flat file or csv file to a table in a mysql database (mariaDB). I do it step by step explaining the operation of each line of code and the functions necessary for this task.

Code:

// Creamos la conexión
$cn = new mysqli('localhost', 'root', '', 'torneos');
// validamos la conexiòn
if ($cn->connect_error) {
    die("ERRROR CONECTANDO => " . $cn->connect_error);
}
$msgLog = '';
echo $msgLog .=  "********** SCRIPT CARGA DE DATOS DE UN ARCHIVO ************\n";
//definimos el archivo
$fileName = 'data.csv';
echo $msgLog .=  "Buscando el archivo $fileName.....\n";
//abrir el archivo
echo $msgLog .=  "Abriendo archivo $fileName.....\n";
$openFile = fopen($fileName,'r');
if($openFile!==FALSE){	
	echo $msgLog .=  "Archivo encontrado .....\n";	
	$contador = 0;
	$regOk = 0;
	$regError = 0;
	while (($data = fgetcsv($openFile,1000,';'))!== FALSE) {						
		if($contador>0){
			$cantEquipo = trim($data[0]);
			$cantDuelos = trim($data[1]);			
			echo $msgLog .=  "Procesando fila $contador...\n";		
			echo $msgLog .=  "Datos encontrados en fila $contador [ $cantEquipo - $cantDuelos]...\n";		
			echo $msgLog .=  "Guardando en tabla competencia ...\n";		
			$sql="INSERT INTO competencia (Id_com, Cant_equipos, Cant_duelos) VALUES (NULL,".$cantEquipo.",".$cantDuelos.");";
			echo $sql."\n";
			$insert= $cn->query($sql);
			if($insert){
				$regOk++;
				echo $msgLog .=  "Se almaceno los valores correctamente \n";
			}else{
				$regError++;
				echo $msgLog .=  "Problema la insertar valores de la fila $contador \n";
			}
		}else{
			$contador++;
		}
	}
	echo $msgLog .=  "********** RESUMEN SCRIPT ************\n";
	echo $msgLog .=  "** filas encontradas $contador      **\n";
	echo $msgLog .=  "** registros realizados $regOk      **\n";
	echo $msgLog .=  "** errores de registro $regError    **\n";
	echo $msgLog .=  "***********************+**************\n";
	$date = date('Y-m-d H:m:i');
	echo $msgLog .= "FECHA DE CARGA => $date";
	error_log($msgLog,3,"ArchivoLog.txt");
}

In this article we will show you how to upload data from a CSV file to a MySQL database using a PHP script. This type of automation is very useful when you need to import information in bulk, for example to register competencies, products, users or any type of structured data.

Here's a step-by-step explanation of the code:

  1. Connecting to the database
    The script starts by establishing a connection to a database called torneos, utilizando mysqli:
$cn = new mysqli('localhost', 'root', '', 'torneos');
if ($cn->connect_error) {
    die("ERRROR CONECTANDO => " . $cn->connect_error);
}

If an error occurs during connection, the script stops with a message.

  1. Reading the CSV file
    The name of the CSV file is defined (data.csv) and an attempt is made to open it with fopen:
$fileName = 'data.csv';
$openFile = fopen($fileName, 'r');
  1. Processing of rows
    Each row of the file is traversed using fgetcsv, omitiendo la primera fila (que generalmente es la cabecera).
while (($data = fgetcsv($openFile, 1000, ';')) !== FALSE) {
    if($contador > 0){
        $cantEquipo = trim($data[0]);
        $cantDuelos = trim($data[1]);
        ...
    }
}
  1. Database insertion
    Each row becomes a INSERT INTO to table competencia:
$sql = "INSERT INTO competencia (Id_com, Cant_equipos, Cant_duelos) VALUES (NULL, $cantEquipo, $cantDuelos);";
$insert = $cn->query($sql);
  1. Activity and error log
    The script counts how many records were inserted correctly and how many failed. The entire process is documented and saved in a log file called ArchivoLog.txt usando error_log.
  2. Process overview
    Al final del script se muestra un resumen con la cantidad de filas procesadas, registros insertados y errores.

¿Por qué es útil este script?

  • Automatiza la carga masiva de datos.
  • Útil en sistemas de gestión, torneos, inventarios y más.
  • Genera un log con información detallada para auditar el proceso.

Conclusión

Este ejemplo práctico de cómo leer un CSV e insertarlo en una base de datos MySQL con PHP es una excelente base para desarrolladores que trabajan con migración de datos o carga automatizada. Puedes adaptarlo fácilmente para otros tipos de datos o estructuras de tablas.

¿Te gustaría recibir más scripts útiles para desarrollo en PHP? ¡Déjalo en los comentarios!

¡Mensaje enviado!