Foros del Web » Programando para Internet » PHP »

Problema extraño con mysql_fetch_array

Estas en el tema de Problema extraño con mysql_fetch_array en el foro de PHP en Foros del Web. Hola. Cuando ejecuto este código: Código PHP:         $tipo      =  $_GET [ "tipo" ];      $titulo     =  $_GET [ "titulo" ];      $result = mysql_db_query ( ...
  #1 (permalink)  
Antiguo 06/09/2003, 09:34
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Problema extraño con mysql_fetch_array

Hola. Cuando ejecuto este código:

Código PHP:
        $tipo     $_GET["tipo"];
    
$titulo    $_GET["titulo"];
    
$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = $titulo");
    
//Meto los resultados en variables
    
while ($row=mysql_fetch_array($result)) 
Me da un error en la línea mysql_fetch_array. Ejecuto el scritp correctamente, eso seguro: script.php?tipo=pelicula&titulo=Xmen

El registro existe correctamente, porque si lo ejecuto así:
Código PHP:
        $tipo     $_GET["tipo"];
    
$titulo    $_GET["titulo"];
    
$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = 'Xmen'");
    
//Meto los resultados en variables
    
while ($row=mysql_fetch_array($result)) 
El error no me lo da. ¿Cómo tendría que hacer la consulta?

Muchas gracias a todos por lo mucho que ayudais
  #2 (permalink)  
Antiguo 06/09/2003, 10:59
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
cro que te falta comillas en las variables
Código PHP:
$tipo     $_GET["tipo"];
    
$titulo    $_GET["titulo"];
    
$result=mysql_db_query("dolarweb","select * from '$tipo' Where titulo = '$titulo'");
    
//Meto los resultados en variables
    
while ($row=mysql_fetch_array($result)) 
  #3 (permalink)  
Antiguo 06/09/2003, 11:39
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Pues no... lo siento. Sigue dando el error:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/webcindario/dolarweb/elink_mostrar.php on line 23

Se os ocurre por qué?

es por pasar la variable por $_GET? es raro, porque $tipo si que lo pasa bien, por que ejecutando:

$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = 'Xmen'");

poniendo el $tipo, ejecuta la tabla bien... ¡¡Socorro!!, ¿¿Qué hago??
  #4 (permalink)  
Antiguo 06/09/2003, 11:52
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
el error te dice que no hay array que no hay salida,

Código PHP:
//¿que tabla es $tipo ?

    
$result=mysql_db_query("dolarweb","select * from  '$tipo' Where titulo = '$titulo'") or die ( no rulla);
    
//Meto los resultados en variables
    
while ($row=mysql_fetch_array($result)) 
  #5 (permalink)  
Antiguo 06/09/2003, 13:21
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

EL problema es que a $tipo no hay que ponerle comillas. Todo es cuestion de logica. Si tu quieres que ejecute la consulta:

select * from cine Where titulo = 'Xmen'

solo tienes que sustituir los nombres por la variables:

select * from $tabla Where $campo = '$peli'

sin tocar nada mas.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 06/09/2003, 18:30
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Es que tengo varias tablas. pelicuas, series...
y hago una consulta con los valores:
$tipo = pelicuas
$titulo = xmen

(pasadas por URL)
si la hago así:
Código PHP:
$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = 'Xmen'"); 
Funciona genial, pero si la hago así:
Código PHP:
$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = '$titulo'"); 
Que es como dice Josemi, o si lo hago como ya dije, me da el error:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/webcindario/dolarweb/elink_mostrar.php on line 11

Ah, Jordi1, no puede ser el error que dices (lo de que no hay resultados), porque si sustituyo la variable por 'Xmen' (su valor) si funciona... ¿Se os ocurre algo más?

Gracias
  #7 (permalink)  
Antiguo 06/09/2003, 18:52
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
prueba esto
$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = '$titulo'") or die mysql_error();

de esta manera sabras que tipo de error te da en el select

despues

$tipo = pelicuas
es un error o es asi
$tipo = peliculas

a ver que pasa
  #8 (permalink)  
Antiguo 06/09/2003, 19:13
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Estoy desesperado. Esa sentencia que me das, me devuelve un Parse Error... que me tengo más visto ese error...
Código PHP:
$tipo     $_GET["tipo"];
    
$titulo    $_GET["titulo"];
    
$result=mysql_db_query("dolarweb","select * from $tipo Where titulo = '$titulo'") or die mysql_error();
    
//Meto los resultados en variables
    
while ($row=mysql_fetch_array('$result')) 
Parse error en la linea del $result

  #9 (permalink)  
Antiguo 06/09/2003, 20:00
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 20 años, 11 meses
Puntos: 1
la verdad , yo veo bien la sentencia lo unico que se me ocurre
es que la variable de $tipo no sea el mismo nombe que lo que
tienes de nombre en la tabla, revisa , que lo que llegue de $tipo
sea exactamente el nombe de la tabla,

a ver que pasa

un salduo
  #10 (permalink)  
Antiguo 07/09/2003, 09:26
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
nada, es imposible, se que están bien las variables porque he usado un 'echo' como este:
Código PHP:
<?
//Conexion con la base de datos
mysql_connect("mysql.webcindario.com","________","________");

//Ejecuto la sentencia SQL
$result=mysql_db_query("dolarweb","select * from peliculas where titulo = {$_GET["titulo"]}");
echo 
"select * from peliculas where titulo = {$_GET["titulo"]}";
//Mostramos los registros
while ($row=mysql_fetch_array($result))
{
echo 
'<tr><td>'.$row["titulo"].'</td>';
echo 
'<td>'.$row["comentario"].'</td></tr>';
}
mysql_free_result($result)
?>
El echo muestra lo siguiente:
select * from peliculas where titulo = Xmen

Y esa entrada, os puedo asegurar que existe en la base de datos, que os la pongo aquí respetando las mayúsculas y minúsculas:
_________________________________________
|__________________ peliculas_______________|
Column | titulo | comentario |
------------------------------------------------------------------
Fila 1 | Xmen |Sinopsis |
-------------------------------------------------------------------

¿No podeis ponerme alguna consulta como esta que hayais usado en uno de vuestros programas y que funcione? :(
  #11 (permalink)  
Antiguo 07/09/2003, 09:28
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
La tabla ha salido un poco mal... os la pongo aquí...

Tabla: peliculas
Columnas: titulo/comentario
Registro 1: Xmen/Sinopsis
  #12 (permalink)  
Antiguo 07/09/2003, 12:13
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 21 años, 3 meses
Puntos: 0
mm haber se supone que solo arrojara un resultado entonces para que hacer el bucle while haber te muestro:

Código PHP:

<?

mysql_connect
("mysql.webcindario.com","","");


$result=mysql_query("SELECT * FROM peliculas WHERE titulo='".$_GET['titulo']."'");

$row=mysql_fetch_array($result);

echo 
'<tr><td>'.$row["titulo"].'</td>';
echo 
'<td>'.$row["comentario"].'</td></tr>';

mysql_free_result($result)
?>
__________________

la vida es bella cuando no es culera
  #13 (permalink)  
Antiguo 07/09/2003, 13:26
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Cuando te den una funcion nueva, mira en el manual como se usa. No te fies de la sintaxis que te dan. Siempre puede haber gazapos. Mira die() (www.php.net/die).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #14 (permalink)  
Antiguo 08/09/2003, 07:50
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Olé!, parece que ya veo la solución, gracias a lo que me ha dicho josemi he encontrado un fallo. He logrado usar la función que me dijo Jordi1: la de DIE, y la línea
Código PHP:
$row=mysql_fetch_array($result); 
es la que me da el error.

Según PHP.net, el error es por el manual de desarrolloweb, porque con la función mysql_fetch_array hay que usar esto:

Código PHP:
$row=mysql_fetch_array($resultMYSQL_NUM); 
Pero yo no se lo que es MYSQL_NUM, ¿Qué es? ¿Qué tengo que poner?

Gracias a todos!
  #15 (permalink)  
Antiguo 08/09/2003, 07:52
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Ah, el error que da esa función es: No Database Selected
  #16 (permalink)  
Antiguo 08/09/2003, 08:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Bueno, es que te tienes que aclarar: o usas mysql_db_query() o la combinacion mysql_select_db()/mysql_query().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #17 (permalink)  
Antiguo 08/09/2003, 08:16
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Bueno, pues el que me digais. que tengo que poner es este caso?
  #18 (permalink)  
Antiguo 08/09/2003, 08:20
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Yo recomiendo que se use mysql_select_db()/mysql_query(), porque si no me equivoco mysql_select_db() puede desaparecer sin previo aviso. El mysql_select_db() (www.php.net/mysql_select_db) lo usas justo despues del mysql_connect(), y le pasas como argumento el nombre de tu base de datos (aquel primer argumento de mysql_db_query()).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #19 (permalink)  
Antiguo 08/09/2003, 08:23
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 8 meses
Puntos: 0
Pero el mysql_fetch_array me sigue diciendo que ponga algo al lado del $result, ese MSQL_NUM que pone en los ejemplos de PHP.net... ¿Sabes lo que es?
  #20 (permalink)  
Antiguo 08/09/2003, 08:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Si, es el valor devuelto por mysql_connect().

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #21 (permalink)  
Antiguo 08/09/2003, 09:47
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 2 meses
Puntos: 22
Creo que el problema es que no esta llegando bien la variable, te recomiendo lo siguiente, trata de imprimir el valor de la variable con un simple echo, antes de jecutar la secencia sql, unicamente para verificar que la variable haya llegado bien.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:47.