Foros del Web » Programando para Internet » PHP »

Warning: mysql_fetch_array()

Estas en el tema de Warning: mysql_fetch_array() en el foro de PHP en Foros del Web. Estimados, tengo un problema justo en este segmento de codigo, me marca lo siguiente: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource ...
  #1 (permalink)  
Antiguo 25/01/2011, 15:21
Avatar de heap811019  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 40
Antigüedad: 13 años, 3 meses
Puntos: 1
Warning: mysql_fetch_array()

Estimados, tengo un problema justo en este segmento de codigo, me marca lo siguiente:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\guarda_registro.php on line 102 -> esa linea es justamente la del WHILE

Código PHP:
$ofx "NO se ha guardado el registro, ya existe ese Oficio con el FOLIO: ";

$res mysql_query("select ID from correspondencia where NUM_OFICIO = ".$nooficio); //Aqui tengo la duda si estoy concatenando bien

    
while ($row=mysql_fetch_array($res))
        {
         echo 
$ofx.$row["ID"];
        } 
Me puede ayudar a corregir el error?

Gracias de antemano
  #2 (permalink)  
Antiguo 25/01/2011, 15:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Warning: mysql_fetch_array()

eso por lo general ocurre cuando la consulta esta mal hecha, osea que hay problemas de sintaxis en la consulta de SQL...

antes de solucionar el problema deberías saber cual es con exactitud, intenta así:
Código PHP:
mysql_query(/* la consulta */) or die(mysql_error()) 
una ves sepas cual es el verdadero error no olvides indicarnos cual es...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 25/01/2011, 16:59
Avatar de heap811019  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 40
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Warning: mysql_fetch_array()

Ya agregue el codigo sugerido Pateketrueke, quedo asi:
Código PHP:
$res mysql_query("select ID from correspondencia where NUM_OFICIO = ".$nooficio) or die(mysql_error()); 
En efecto, me indica el siguiente error: Unknown column 'SICP' in 'where clause'

Cabe mencionar, mi variable $nooficio contiene la siguiente cadena: SICP/0032/2011, por lo que esta tomando los primeros caracteres hasta la diagonal, no se si el error sigue siendo al concatenar. Lo curioso es que esta tomando SICP como si fuera una columna =(

Alguna idea ???

Gracias por tu apoyo Pateketrueke.

Última edición por heap811019; 25/01/2011 a las 17:10
  #4 (permalink)  
Antiguo 25/01/2011, 17:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Warning: mysql_fetch_array()

Pon entre comillas la variable, si es de texto es necesario:
Código PHP:
Ver original
  1. $query = "SELECT * FROM tabla WHERE col = 'valor'";

Saludos.
  #5 (permalink)  
Antiguo 25/01/2011, 17:27
Avatar de heap811019  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 40
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Warning: mysql_fetch_array()

Cita:
Iniciado por GatorV Ver Mensaje
Pon entre comillas la variable, si es de texto es necesario:
Código PHP:
Ver original
  1. $query = "SELECT * FROM tabla WHERE col = 'valor'";

Saludos.
Agradezco tu apoyo nuevamente GatorV

1. De esa forma seria correcto si el valor del WHERE fuera siempre el misma no?

2. Disculpen pero a veces me cuesta mucho explicarme, va de nuevo:

Mi duda es si la forma de concantenar la variable con el query es correcto? por ejemplo:

Código PHP:
$query"SELECT campos FROM tabla WHERE campoX = ".$variable
ya que el proceso es para validar si ya esta registrado un FOLIO al momento de ingresar un nuevo registro; si no existe, procede con la insercion del mismo, pero si ya existe, lo que quiero es que ejecute ese query para traer el ID que corresponde a ese FOLIO e imprimirlo. Se que es algo muy sencillo pero no entiendo por que no esta funcionando y me esigo dando de topes.

Alguna sugerencia ??
Gracias GatorV
  #6 (permalink)  
Antiguo 25/01/2011, 20:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Warning: mysql_fetch_array()

Es simple mira:
Código PHP:
Ver original
  1. $valor = "FOO BAR / BAZ";
  2. $query = "SELECT * FROM tabla WHERE campo='$valor'";

Saludos.
  #7 (permalink)  
Antiguo 25/01/2011, 20:19
 
Fecha de Ingreso: agosto-2009
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Warning: mysql_fetch_array()

Veamos:

1) La forma de concatenar texto con variables es la correcta.

2) Ahora bien ¿Por que tu codigo no funciona?
Simplemente pq es una consulta SQL y estas obviando unos detalles que deberías tener en cuenta

Veamos tu consulta pasada en limpio queda algo asi:

Código MySQL:
Ver original
  1. SELECT campos FROM tabla WHERE campoX = SICP/0032/2011

Ok, a mysql le molesta el caracter / y esto hacer que rompa tu consulta y el msqyl proteste.
Considera que el campoX solo lo debe compara con SICP y lo demas genera error. (Para mas detalle investiga en la doc de Mysql como se realizan correctamente las consultas select)

Para solucionar esto debes encerrar tu variable entre comillas, con esto indicas que todos esos caracteres los trate como una cadena de texto, quedando asi tu consulta

Código MySQL:
Ver original
  1. SELECT campos FROM tabla WHERE campoX = 'SICP/0032/2011'

De esta forma msqyl la procesara de forma correcta.

Tu código PHP correcto seria este:

Código MySQL:
Ver original
  1. $query= "SELECT campos FROM tabla WHERE campoX = '".mysql_real_escape_string($variable)."'";

Detalle, fijate que agrege la funcion mysql_real_escape_string (http://www.php.net/mysql-real-escape-string)

Te recomiendo que te interiorices mas en el tema de SQL injection ya que resolverías este tema y otros mas sobre seguridad
  #8 (permalink)  
Antiguo 26/01/2011, 12:40
Avatar de heap811019  
Fecha de Ingreso: enero-2011
Ubicación: Mexico DF
Mensajes: 40
Antigüedad: 13 años, 3 meses
Puntos: 1
Respuesta: Warning: mysql_fetch_array()

Muchas gracias por el apoyo GatorV y MostoFreddy. He aprendido bastante de sus consejos =)

Hice la prueba con la funcion mysql_real_escape_string que me recomendaste MostoFreddy y me ha funcionado de maravilla, el codigo quedo de la siguiente manera:

Código PHP:
$res mysql_query("select * from correspondencia where NUM_OFICIO = '".mysql_real_escape_string($nooficio)."'") or die(mysql_error()); 
Se que todavia tengo mucho por aprender, y con sus consejos el aprendizaje es mucho mas rapido y sencillo.

MostoFreddy, agradezco enormemente la explicacion tan clara y detallada que me has dado, tomare tus sugerencias y consultare mas a detalle las docs mencionadas.

Nuevamente gracias MostoFreddy y GatorV
Saludos !!!
  #9 (permalink)  
Antiguo 26/01/2011, 14:59
 
Fecha de Ingreso: agosto-2006
Mensajes: 125
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Warning: mysql_fetch_array()

o tambien le puedes poner de esta manera

$sql="select cod from tabla where cod='$variable'";
mysql_query($sql,$coneccion) or die (mysql_error());

Etiquetas: warning
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 01:15.