Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problemas con un Simple SELECT

Estas en el tema de Problemas con un Simple SELECT en el foro de Mysql en Foros del Web. Saludos amigos Foreros... gracias por leer este tema. Mi problema es el siguiente: Estoy realizando una Web +- con POO hice las conecciones y consultas ...
  #1 (permalink)  
Antiguo 23/06/2009, 15:01
Avatar de RonaldNet  
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Problemas con un Simple SELECT

Saludos amigos Foreros... gracias por leer este tema.
Mi problema es el siguiente:
Estoy realizando una Web +- con POO hice las conecciones y consultas basicas y necesarias, y todo está de maravilla menos una consulta.. que debe seleccionar registros que tengan el campo "TIPO_PRODUCTO" en común.. les pongo el fragmento de código:
Código PHP:
$categoria $_GET['categoria']; // lo que llega del GET es un string pej: "Prosuctos Naturales"
$consulta $objProducto->mostrar_productos_por_categoria($categoria);    
$producto mysql_fetch_array($consulta);//es aqui donde me da el error... 
Es precisamente en la última linea donde me da el error que me dice que el argumento para mysql_fetch_array no es válido

aqui va la consulta sql:
Código PHP:
function mostrar_productos_por_categoria($campo){
    if(
$this->con->conectar()==true){
        return 
mysql_query("SELECT * FROM 'productos' WHERE 'tipo_producto'=".$campo);
        }
    } 
hice las pruebas necesarias (ordie,etc) y efectivamente lo que llega a la consulta es el texto que se manda.
Todas mis consultas tienen esa estructura y funcionan bién menos esta... no veo donde puede estar mi error.... porfavor salvenme... "les agradecere de por vida"
  #2 (permalink)  
Antiguo 23/06/2009, 15:14
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con un Simple SELECT

Esto:
Cita:
el argumento para mysql_fetch_array no es válido
habitualmente es un problema de programación PHP, no de bases de datos, pero mirando atentamente tu consulta noté algo. Estás confundiendo los apóstrofes (') con los acentos (`)con que se encierran los nombres de los campos, bases y tablas. La sentencia está mal escrita, y eso es posiblemente lo que sucede.
Tu escribes:
Código sql:
Ver original
  1. SELECT *
  2. FROM `productos`
  3. WHERE `tipo_producto`=valor;
y en realidad es:
Código sql:
Ver original
  1. SELECT *
  2. FROM 'productos'
  3. WHERE 'tipo_producto'=valor;
Nota la diferencia en los nombres de campos y tabla. Los apóstrofes encierran cadenas de texto. No los nombres de bases, tablas y tablas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 23/06/2009, 15:26
Avatar de RonaldNet  
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 14 años, 11 meses
Puntos: 0
Pregunta Respuesta: Problemas con un Simple SELECT

Gracias por responder gnzsoloyo es que olvidé borrar esos apostrofes, por que estaba probando y probando probaré lo que tu dices...
Pero la verad es que deberia funcionar sin ellos asi:
Código PHP:
function mostrar_productos_por_categoria($campo){
        if(
$this->con->conectar()==true){
            echo (
"esto llega a la consulta: ".$campo);
            return 
mysql_query("SELECT * FROM productos WHERE tipo_producto=".$campo);
        }
    } 
no le encuentro el problema; hice casi de la misma forma mis demas consultas y estan bien...
Help help help...
  #4 (permalink)  
Antiguo 24/06/2009, 07:54
Avatar de RonaldNet  
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Problemas con un Simple SELECT

nadiee.............
  #5 (permalink)  
Antiguo 24/06/2009, 08:16
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Problemas con un Simple SELECT

Prueba la consulta directamente en mysql.
SELECT * FROM productos WHERE tipo_producto=un _valor

Si corre en mysql, el problema está en php y no en la base de datos.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #6 (permalink)  
Antiguo 24/06/2009, 09:22
Avatar de RonaldNet  
Fecha de Ingreso: mayo-2009
Mensajes: 31
Antigüedad: 14 años, 11 meses
Puntos: 0
De acuerdo Respuesta: Problemas con un Simple SELECT

Saludos huesos52...
Luego de probar y probar encontre el problemilla...
era un problema de sintaxis entre php y mysql:
miren...
yo escribi así:
Código PHP:
return mysql_query("SELECT * FROM productos WHERE tipo_producto=".$campo); 
pero en realidad $campo mysql lo tomaba cono "vacio"..... pero haciendole el siguiente cambio funcionó de maravilla
Código PHP:
    function mostrar_productos_por_categoria($campo){
        if(
$this->con->conectar()==true){
            return 
mysql_query("SELECT * FROM productos WHERE tipo_producto='$campo' ORDER BY id_producto asc");
        }
    } 
casi casi lo que me dijo gnzsoloyo.
Talvez sea algo ovio para algunos pero para mi que doy mis primeros pasos con php y mysql me causó todo un dia probando y probando...
Gracias por todas sus sugerencias...
  #7 (permalink)  
Antiguo 24/06/2009, 10:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problemas con un Simple SELECT

Me alegra que o hayas solucionado.
Ocasionalmente se da, y hay que tener en cuenta, que cuando construyes desde la programación de la aplicación las cadenas de las sentencias SQL incrustándole los valores, que uno se olvide de encerrar entre apóstrofes el contenido de los campos.
Cuando esto pasa se suelen dar errores casi imperceptibles:
- Si es una cadena lo que contiene, es posible que te salte un error de campo no encontrado o desconocido, porque interpreta la cadena como el nombre de un campo.
- Si es una fecha, puede darte error de sintaxis o valores truncados. porque queda algo así: campo = 2009-01-01 - 23:00:00, cuando en realidad debería recibir: campo '= 2009-01-01 - 23:00:00'.
- Los valores numéricos no suelen genera errores, salvo cuando exceden el ancho del campo y salta un "dato truncado en..."

El problema de este pequeño olvido es que cuando se revisa la sentencia, está perfectamente escrita. El error es que al estar representada la variable ($campo, en tu caso) y no el contenido de la variable, el error se vuelve invisible.
Esa es una de las razones de nuestra insistencia en que se ponga SQL y no PHP aquí.

Muchas veces la solución es simple: Hay que revisar lo que realmente queda en la variable de la sentencia, porque eso es lo que recibirá MySQL.

Este tipo de problemas es menos habitual en .Net o Java porque en esos lenguajes se usan conectores que permiten incrustar los parámetros como objetos, siendo el conector el que administra la estructura sintáctica correcta del dato.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 05:34.