PHP - Leer un listado y consultarlo en db

 
Vista:
sin imagen de perfil

Leer un listado y consultarlo en db

Publicado por rafa (2 intervenciones) el 17/02/2017 11:16:50
Hola, quisiera saber como poder consultar los datos de un listado contenido en una fichero. El script que he hecho me falla y no entiendo que hago mal, o igual hay otra forma mas limpia y facil de hacerlo.

Este es el script:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$link = mysqli_connect("localhost", "root");
mysqli_select_db($link, "pruebas") or die("No se puede conectar con la base de datos");
$file = fopen("1.txt", "r") or die("No se puede abrir el fichero");
while($linea=fgets($file))
{
    $consulta=mysqli_query($link, "SELECT * FROM tabla1 WHERE datos LIKE '%$linea%'");
    echo "<br>";
    echo $linea,"<br>";
    $res=mysqli_fetch_row($consulta);
    echo $res[0]."--<br>";
    echo $res[1]."--<br>";
}
fclose($file);
mysqli_close($link);
?>

RESUKTADO EN PANTALLA tras ejecutarlo:

12345
--
--

123456
--
--

11111
--
--

1111
--
--

2222
2--
22


Listado del fichero 1.txt:
12345
123456
11111
1111
2222

Contenido de la db a consultar:
1111
2222
11111
22222
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
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Leer un listado y consultarlo en db

Publicado por kip (877 intervenciones) el 17/02/2017 21:13:05
Hola, lo que te recomiendo es primero verificar antes de mostrar los resultados de la consulta si esta tiene resultados con mysqli_num_rows() y luego con un while muestras los registros que haya traido la consulta, algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
$link = mysqli_connect("localhost", "root");
mysqli_select_db($link, "pruebas") or die("No se puede conectar con la base de datos");
$file = fopen("1.txt", "r") or die("No se puede abrir el fichero");
while($linea = fgets($file))
{
    $consulta = mysqli_query($link, "SELECT * FROM tabla1 WHERE datos LIKE '%$linea%'");
    echo "<br>";
    echo $linea,"<br>";
    if (mysqli_num_rows($consulta) > 0) {
        while ($res = mysqli_fetch_row($consulta)) {
            echo $res[0]."--<br>";
            echo $res[1]."--<br>";
        }
    }
}
fclose($file);
mysqli_close($link);
?>

Intentalo de esa forma y nos avisas si funciona como deseas.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Leer un listado y consultarlo en db

Publicado por rafa (2 intervenciones) el 22/02/2017 17:19:31
Gracias por tu respuesta.
Lo he solucionado con un simple trim, el problema era el salto de linea.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar