Error Undefined offset: 2 [PHP]
Resuelto
Thibaut
-
Thibaut -
Thibaut -
Hola,
Estoy haciendo un script para importar contenido CSV a una base de datos.
Cuando muestro mi variable $getData todo está perfecto, tengo:
Array
(
[0] -> 1ª dato
[1] -> 2ª dato
[2] -> 3er dato
)
Pero cuando intento ejecutar mi consulta, tengo errores Undefined offset: 1 y Undefined offset: 2.
Sin embargo, algunos datos pasan (mi 13ª fila del CSV por ejemplo pasa niquel y 2-3 más, pero el resto da error)
Aquí mi código :
Pour précision dans ma requête :
$i=1 et $y=2
$getData[0] est un titre
$getData[1] est une description (très longue pour la plupart des lignes)
$getData[2] un autre titre
La base de donnée dans laquelle je souhaite insérer ma requête est celle d'un prestashop gérée par phpmyadmin.
Quelqu'un pourrait m'aiguiller sur l'origine du problème ?
Merci d'avance.
Configuration: Windows / Chrome 97.0.4692.99
Estoy haciendo un script para importar contenido CSV a una base de datos.
Cuando muestro mi variable $getData todo está perfecto, tengo:
Array
(
[0] -> 1ª dato
[1] -> 2ª dato
[2] -> 3er dato
)
Pero cuando intento ejecutar mi consulta, tengo errores Undefined offset: 1 y Undefined offset: 2.
Sin embargo, algunos datos pasan (mi 13ª fila del CSV por ejemplo pasa niquel y 2-3 más, pero el resto da error)
Aquí mi código :
$file = fopen('test2.csv', "r");
while (($getData = fgetcsv($file, 0 , ";")) !== FALSE)
{
$sql = "INSERT into matable (colone1,colone2,colone3,colone4,colone5)
values ('".$i."','".$y."','".$getData[0]."','".$getData[1]."','".$getData[2]."')";
$result = mysqli_query($con, $sql);
}
fclose($file);
Pour précision dans ma requête :
$i=1 et $y=2
$getData[0] est un titre
$getData[1] est une description (très longue pour la plupart des lignes)
$getData[2] un autre titre
La base de donnée dans laquelle je souhaite insérer ma requête est celle d'un prestashop gérée par phpmyadmin.
Quelqu'un pourrait m'aiguiller sur l'origine du problème ?
Merci d'avance.
Configuration: Windows / Chrome 97.0.4692.99
4 respuestas
-
Hola
Ciertamente tienes saltos de línea en tu CSV (en los comentarios)
Lo cual arruina la lectura del CSV en tu bucle.
--
.
Atentamente,
Jordane -
Si fuera así, ¿las saltos de línea también estropearían la lectura cuando hago un print_r de mi variable $getData? Porque en ese caso cuando la muestro todo está bien...
He visto que se pueden escapar ciertos caracteres en fgetcsv,
¿Crees que es posible escapar los saltos de línea para hacer una prueba? -
He añadido:
$order = array("\r\n", "\n", "\r");
$replace = '<br />';
$newstr = str_replace($order, $replace, $getData[1]);
9 solicitudes de 96 pasan correctamente, pero las demás siguen rechazándose....-
No es al leer los datos obtener (getData) lo que hay que hacer... sino ANTES de leer el CSV.
En resumen, hay que abrir el CSV (desde tu script PHP, por supuesto)
1- reemplazar los \r\n por otro carácter (por ejemplo µ)
2- luego reemplazar los \n por un espacio
3- Reemplazar µ por \r\n
Así conservarás los saltos de línea de fin de línea.. pero suprimirás aquellos que podrían estar dentro de los campos de tu CSV..
Y una vez que ello esté hecho, podrás entonces usar tu script actual para analizar (parse) el CSV correctamente.
.
-
-
Gracias por tu ayuda, al final logré lo que me dijiste, además de reemplazar las comillas que había olvidado y todo funcionó.