Foros del Web » Programando para Internet » PHP »

Error Con mysql_fetch_array

Estas en el tema de Error Con mysql_fetch_array en el foro de PHP en Foros del Web. Nas, haber si alguien me puede ayudar, estoy tratando de sacar las metatags de una bd mysql, pero no consigo que me funcione este while ...
  #1 (permalink)  
Antiguo 25/07/2008, 14:19
 
Fecha de Ingreso: agosto-2006
Ubicación: MiCasa-Valencia-España
Mensajes: 116
Antigüedad: 17 años, 7 meses
Puntos: 0
Error Con mysql_fetch_array

Nas, haber si alguien me puede ayudar, estoy tratando de sacar las metatags de una bd mysql, pero no consigo que me funcione este while segguramente sera un fallo tonto pero no caigo.
Me da el siguiente error:
Cita:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\wamp\www\s-portal\s-adjuntos\meta.php on line 4
Siendo la linea 4 el while.
Código PHP:
while ($Metatag=mysql_fetch_array($MetaQuery)){
    if (
$Metatag["NidConfig"]=='1'){
        echo 
"<title>".$Metatag['StrNombre']."</title>\n";
        }        
    else
        echo 
"<meta name='".$Metatag['StrNombre']."' content='"$Metatag['StrValue']."'>\n";
}; 
He probado tambien de otra forma, con un contador, sin embargo este no muestra errores pero tampoko imprime el contenido del while.
Código PHP:
$Meta="SELECT * FROM 8s8z_config WHERE NidConfig LIKE '1 , 2 , 4 , 5 , 6 , 7 , 8 , 9 , 10';";
$MetaQuery=mysql_query($Meta,$Conexion);
while (
$Metatag=mysql_fetch_array($MetaQuery))
{
    
$Contador=0;
    if (
$Contador==0){
        echo 
"<title>".$Metatag['StrNombre']."</title>\n";
        
$Contador++;
        }        
    else
        echo 
"<meta name='"$Metatag['StrNombre']."' content='"$Metatag['StrValue']."'>\n";
}; 
  #2 (permalink)  
Antiguo 25/07/2008, 15:00
 
Fecha de Ingreso: julio-2008
Mensajes: 83
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: Error Con mysql_fetch_array

La consulta da un error, por tanto $MetaQuery no tiene un MySQL resource, sino un simple NULL, por tanto mysql_fetch_array() falla con un error. Comproba la consulta.

PD: La consulta tambien puede fallar porque no estes conectado a la db, o no hayas seleccionado la db donde queres trabajar. Lo mejor seria que uses mysql_error() para ver que pasa exactamente.

Saludos.
  #3 (permalink)  
Antiguo 25/07/2008, 23:30
 
Fecha de Ingreso: agosto-2006
Ubicación: MiCasa-Valencia-España
Mensajes: 116
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Error Con mysql_fetch_array

Gracias por responder tan rapido Thaorius^^.

Haber el caso es que la bd existe, y la query funciona perfectamente desde phpmyadmin
Código PHP:
$Pie="SELECT * FROM 8s8z_config WHERE NidConfig LIKE '11';";
$PieQuery=mysql_query($Pie,$Conexion);
while (
$Pietag=mysql_fetch_array($PieQuery))
{
    echo 
$Pietag['StrValor']." \n";
}; 
si intento mostrar solo este campo por ejemplo funciona perfectamente, parece que el fallo este en el iff.. pero no veo el fallo :(
  #4 (permalink)  
Antiguo 25/07/2008, 23:41
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: Error Con mysql_fetch_array

Hola StReO

puedes postear el resultado de esto? :

Código PHP:
$Pie="SELECT * FROM 8s8z_config WHERE NidConfig LIKE '11';"
$PieQuery=mysql_query($Pie,$Conexion); 
while (
$Pietag=mysql_fetch_array($PieQuery)) 

    
print_r($Pietag);
}; 
  #5 (permalink)  
Antiguo 26/07/2008, 02:00
Avatar de frins  
Fecha de Ingreso: enero-2008
Ubicación: Osor, Girona
Mensajes: 227
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: Error Con mysql_fetch_array

puedes mostrarnos el código desde que te conectas a la base de datos hasta despues del while?
__________________
Buscador Net-Seekr
http://www.net-seekr.com
  #6 (permalink)  
Antiguo 26/07/2008, 04:57
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 2 meses
Puntos: 81
Respuesta: Error Con mysql_fetch_array

Trata de ver si la query desde php a mysql se esta ejecutando con:
Código PHP:
$MetaQuery=mysql_query($Meta,$Conexion) or die('Error: '.mysql_error()); 
Ya que, como dice Thaorius para que mysql_fetch_array() envie un error con una consulta que efectivamente esta probada, debe ser un error de conexion.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 26/07/2008, 09:43
 
Fecha de Ingreso: agosto-2006
Ubicación: MiCasa-Valencia-España
Mensajes: 116
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Error Con mysql_fetch_array

La conexion es la siguiente:
Código PHP:
//Datos de conexión con la base de datos MySql//
$Servidor='localhost';            //Nombre del servidor de la base dedatos, normalmente es " localhost ".//
$Usuario='root';                //Nombre de usuario que tiene acceso a la base de datos.//
$Clave='';                        //Contraseña del usuario que tiene acceso a la base de datos.//
$Bd="s-portal";                    //Nombre de la base dedatos con la que quieres trabajar.//
$Conexion=mysql_connect($Servidor,$Usuario,$Clave) or die ("Error al conectrar con la bd"); //Establece la conexión.//
mysql_select_db($Bd,$Conexion);    //Selecciona la Base de datos con la que trabajaremos posteriormente.// 
Y luego, tengo 1 código con un if dentro del while que es el que no muestra nada, este esta editado desde la ultima vez, he cambiado la condición del if (MySqlmyAdmin me devuelve el contenido con la query sin problemas):
Código PHP:
$Meta="SELECT * FROM 8s8z_config WHERE NidConfig LIKE '1 , 2 , 4 , 5 , 6 , 7 , 8 , 9 , 10';";
$MetaQuery=mysql_query($Meta,$Conexion);
while (
$Metatag=mysql_fetch_array($MetaQuery)){
echo 
"Cosas";
    if (
$Metatag["StrNombre"]=='Title'){
        echo 
"<title>".$Metatag['StrValor']."</title>\n";
        }        
    else
        echo 
"<meta name='".$Metatag['StrNombre']."' content='"$Metatag['StrValue']."'>\n";
}; 
Y este otro que me da respuesta:
Código PHP:
$Pie="SELECT * FROM 8s8z_config WHERE NidConfig LIKE '11';";
$PieQuery=mysql_query($Pie,$Conexion);
while (
$Pietag=mysql_fetch_array($PieQuery))
{
    echo 
$Pietag['StrValor']." \n";
}; 
Me muestra:
Cita:
|S-Portal © 2008|
Nota: El error de mysql_fetch_array() que me mostraba antes, ahora ya no aparece pero sin embargo no muestra nada.
  #8 (permalink)  
Antiguo 27/07/2008, 00:22
 
Fecha de Ingreso: agosto-2006
Ubicación: MiCasa-Valencia-España
Mensajes: 116
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Error Con mysql_fetch_array

Ya he visto el fallo, sin embargo no sabría como arreglarlo.

Cuando pongo una id en el LIKE del select me muestra el contenido:
Cita:
SELECT * FROM 8s8z_config WHERE NidConfig LIKE '1';
Sin embargo con varias id no, y he probado de las siguientes formas:
Cita:
SELECT * FROM 8s8z_config WHERE NidConfig LIKE '2,4,5,6,7,8,9,10,11';
y
SELECT * FROM 8s8z_config WHERE NidConfig LIKE '2' and NidConfig LIKE '4' and NidConfig LIKE '5'.....;
  #9 (permalink)  
Antiguo 27/07/2008, 00:32
Avatar de xbx
xbx
 
Fecha de Ingreso: mayo-2008
Ubicación: /home/xbx
Mensajes: 301
Antigüedad: 15 años, 11 meses
Puntos: 11
Respuesta: Error Con mysql_fetch_array

Pruébalo así:

Código:
SELECT * FROM 8s8z_config WHERE NidConfig IN ('1','2','3');
Asegurate primero haciendo la consulta directamente en la base de datos, es decir, no desde php.

Mis Saludos.
  #10 (permalink)  
Antiguo 27/07/2008, 05:30
Avatar de goc00  
Fecha de Ingreso: enero-2002
Ubicación: 000's DiMensiOn
Mensajes: 979
Antigüedad: 22 años, 3 meses
Puntos: 3
Respuesta: Error Con mysql_fetch_array

Y recuerda que las consultas no se pasan con el ; final en php & mysql, o sea:

Código PHP:
$sql "SELECT * FROM Tabla"//correcto

$sql "SELECT * FROM Tabla;"//incorrecto 
__________________
GOC00 CominG soOn v2.0
CyA! & GooD LuCK...
  #11 (permalink)  
Antiguo 27/07/2008, 08:16
 
Fecha de Ingreso: agosto-2006
Ubicación: MiCasa-Valencia-España
Mensajes: 116
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Error Con mysql_fetch_array

Gracias a todos
xbx como dije antes en mysql si me daba resultado con el like por eso no me fije en eso, era otra consulta de 1 solo resultado que edite posteriormente y se quedo así^^.

goc00
Asías por el detalle, funciona = pero siempre es bueno saber la forma correcta eso lo desconocía.
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 14:50.