PHP - error al actualizar tabla mysql

 
Vista:

error al actualizar tabla mysql

Publicado por julio (54 intervenciones) el 23/09/2008 23:55:27
Envio script simplificado para ilustrar mi error:

Yo leo un txt con 12250 lineas en $Matriz[$i] y con la funcion substr voy extrayendo de cada linea los valores para los distintos campos. Aqui deje solo 2 campos

El for recorre perfectamente la mariz. La instruccion , responsable de actualizar la tabla agrega todos los registros leidos siempre y cuando este ausente la clausula OR DIE.

Pero si le pongo la condiccion OR DIE, como aqui, al intentar agregar el registro 80, corta automaticamente el For y no sigue agregando los demas registros.

$resultado=mysql_query($datos, $conexion);
or die ("ha fallado");

¿Es normal que funcione asi con OR DIE?

Otra duda que me surge, al consultar la tabla desde PhpAdmin, me dice que hay un total de 12189 registros.

Ante esto le puse un contador y a ese contador lo guardo en el campo contador y miro el valor del campo, y coincide con el total.

O sea PHPAdmin me dice que hay menos registros, pero veo el contador y coincide con el total de lineas que tiene la matriz. Esto es normal en PHPAdmin?

<?

for ($i=0;$i<count($Matriz_file);$i++) // Matriz viene con 12250 lineas

{
echo "Fila $i : $Matriz_file[$i]<br>"; // solo para mostrar

$Documento = substr($Matriz[$i],1,8)

echo $i

$datos = "insert into electores (Contador,Documento) values ($i, '$Documento') ";


// actualiza la tabla
$resultado=mysql_query($datos, $conexion);
or die ("ha fallado");

// Asi salta en la linea 80 y desativando Or Die pasa todas las lineas

}
}


?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:error al actualizar tabla mysql

Publicado por Diego Romero (1450 intervenciones) el 24/09/2008 00:33:37
A tu primera pregunta: "¿Es normal que funcione asi con OR DIE?". Sí, la función die() es igual a hacer:

echo "mensaje";
exit;

Es decir, termina la ejecución del script sea donde sea que esté.

Para tu segunda pregunta:
count($Matriz) y count($Matriz_file) ¿devuelven el mismo valor?. Porque el for que pones ahí está controlado por count($Matriz_file) pero dentro de él trabajas con $Matriz.

Independientemente de esto, yo te sugiero que en vez de usar for() uses foreach(), así:

foreach($Matriz as $i => $valor) {
$Documento = substr($valor,1,8);
...
}

Así te aseguras que todos los items contenidos en la matriz son analizados sin importar si el índice es contínuo o no.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al actualizar tabla mysql

Publicado por julio (54 intervenciones) el 24/09/2008 01:35:47
Gracias infinitamente por prestar atencion a mi problema. Ocurre que con el script recorro bien toda la matriz, pero cuando agrego or die a la instruccion que me actualiza la tabla, solo me lee los primero 79 elementos de la matriz (las primeras 79 fila) y en la 80 salta. El indice de la matriz es continuo, porque viene de la lectura del atchivo txt.

Si no pongo Or Die, lee absolutamente todas las filas.

¿Y eso de que me tire un numero distinto PHPAdmin?... de todas formas vi que en la consulta con PHPAdmin no me dá el total real de registros que agrego, pero si los cuento con el contador veo que entran todos los registros, que en el caso que estoy haciendo de conejillo de indias, son 12217 registros.

Desde ya muchisimas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al actualizar tabla mysql

Publicado por Diego Romero (1450 intervenciones) el 24/09/2008 09:47:07
Responde la pregunta que te he hecho.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al actualizar tabla mysql

Publicado por julio (54 intervenciones) el 24/09/2008 17:35:23
Para simplificar y e intentar ser claro quite lineas y en eso cometi el error de poner adentro del For $Matriz[$i] pero en el codigo real es $Matriz_file[$i]. (eN realidad $Matriz_file, es la variable donde leo las lineas del archivo plano con la funcion FILE)

El bucle lo recorre la matriz desde el principio hasta el ultimo elemento, siempre y cuando en la linea que actualiza la tabla no este puesta la opcion OR DIE.

Cuando esta OR DIE, solo lee 79 lineas y sale del bucle. Si la linea no lleva OR DIE, recorre toda la matriz guardando todas las lineas en la tabla.

Mi duda ¿porque se comporta asi con OR DIE?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al actualizar tabla mysql

Publicado por Diego Romero (1450 intervenciones) el 25/09/2008 06:54:15
Ya respondí esa pregunta. ¿Es que no me lees o qué?.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al actualizar tabla mysql

Publicado por julio (54 intervenciones) el 25/09/2008 19:04:03
============= respuesta anterior=====================
Sí, la función die() es igual a hacer:
echo "mensaje";
exit;
Es decir, termina la ejecución del script sea donde sea que esté.
=======================================================

Me viene bien tu aclaracion sobre OR DIE. Quiere decir que con el registro 80 se produce un error y sale.

Pero al sacarle la condicion OR DIE agrega los 12217 registros. Los registros los leo desde un txt, o sea todos los registros estan normalizados.

Intente acotar la posible falla, definiendo todos los campos como string, Con OR DIE salta en el registro 80. Sin OR DIE se cargan todos.

¿Que error estaré cometiendo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:error al actualizar tabla mysql

Publicado por Diego Romero (1450 intervenciones) el 26/09/2008 01:12:07
¿Qué tiene de especial la línea 80 del archivo de texto que no tiene el resto?.
Bueno, esto ya no tiene nada que ver con PHP...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar