problema mysql -> php solo lee el primer registro

markosar200294

New Member
Messages
56
Reaction score
0
Points
0
Hola, Tengo esta consulta:
en $edita hago una busqueda de resgistros que complan unas condiciones de idioma y nivel y me salen por ejemplo 4 registros. OK
Entro en el While y convierto esta consulta en un array $filas que quiero manejar despues.
En $comprobar verifico cada uno de los indices de $filas[].
Si esta consulta resulta vacia entonces mando un mensaje y lo inserto en la otra tabla.
El problema es que solo hace esto con el primer registro y no con los otros 3.
Que pasa????

$edita="SELECT Id FROM material_alumnos WHERE idioma='$idi'AND nivel='$niv'";
$respuesta=mysql_query($edita,$conexion);
while ($filas = mysql_fetch_array($respuesta)) {
$comprobar="SELECT * FROM material_accedido WHERE Id_alumno='$pos' AND Id_material=$filas[0]";
$respuesta=mysql_query($comprobar,$conexion);
if (comprobar_cons_vacia ($respuesta)) {
mensaje ("esta no existia");
$query="INSERT INTO material_accedido (Id_alumno, Id_material, estado, oculto)
VALUES ($pos, $filas[0], 0, 0)";
$respuesta=mysql_query($query,$conexion);
}
} // if
 

gomarc

Member
Messages
516
Reaction score
18
Points
18
Hola markosar200294,

Nota que tu código altera la variable $respuesta dentro del loop WHILE y por tanto la condición $filas = mysql_fetch_array($respuesta) se cumple una sola vez.

Una posible solución es no volver a usar la variable $respuesta hasta salir del WHILE loop. Es decir, cambia $respuesta = mysql_query(..) por $otra_variable = mysql_query(..) mientras dentro del WHILE.

Por ejemplo:

PHP:
while ($filas = mysql_fetch_array($respuesta)) 
{
    $comprobar = "SELECT * FROM material_accedido WHERE Id_alumno='$pos' AND Id_material=$filas[0]";
    $no_existe = mysql_query($comprobar,$conexion);
    if (comprobar_cons_vacia ($no_existe)) 
    {
        mensaje ("esta no existia");
        $query = "INSERT INTO material_accedido (Id_alumno, Id_material, estado, oculto)
                VALUES ($pos, $filas[0], 0, 0)";
        $agregar = mysql_query($query,$conexion);
    }
}


Por otra parte, me permito recomendarte que uses PDO Prepared SQL statements que es mucho mas seguro que el antiguo mysql_query()
 

markosar200294

New Member
Messages
56
Reaction score
0
Points
0
Lo primero agradecerte tu preocupacion. Tu solucion me ha inspirado bastante y con ella he podido avanzar un poco, muchas gracias.
Lo segundo preguntarte de que va eso de PDO, no lo conozco.
 
Top