Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Creo que lo tengo todo bien, ¿hay algo mal?

Estas en el tema de Creo que lo tengo todo bien, ¿hay algo mal? en el foro de PHP en Foros del Web. Creo que todo está en orden sin embargo me sale este error en este código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original while ( $rs = ...
  #1 (permalink)  
Antiguo 28/05/2013, 08:57
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Creo que lo tengo todo bien, ¿hay algo mal?

Creo que todo está en orden sin embargo me sale este error en este código:

Código PHP:
Ver original
  1. while($rs=mysql_fetch_array(mysql_query("SELECT nombre FROM reg_users WHERE user='$_SESSION[usuario]'"))){
  2.                     echo $rs['nombre'];
  3.                 }

El error es el siguiente:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Lemite\index.php on line 118

¿Falla algo?

Gracias por vuestra ayuda... No entiendo el error y no hago más que buscar info pero no sé
  #2 (permalink)  
Antiguo 28/05/2013, 09:04
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Prueba lo siguiente,
Código PHP:
Ver original
  1. $sql = "SELECT nombre FROM reg_users WHERE user='$_SESSION[usuario]'";
  2. $consulta = mysql_query($sql,$variableConexion);
  3. while($rs=mysql_fetch_array($consulta){
  4.                     echo $rs['nombre'];
  5.                 }

También comprueba que con esa consulta realmente estes obteniendo datos que cumplan con la condición.
  #3 (permalink)  
Antiguo 28/05/2013, 12:04
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Le he puesto lo que has dicho definiendo la variable $variableConexion y pone el siguiente error:

Código PHP:
Código PHP:
Ver original
  1. $variableConexion = mysql_connect("localhost", "root", "");
  2.                 $sql = "SELECT nombre FROM reg_users WHERE user='$_SESSION[usuario]'";
  3.                 $consulta = mysql_query($sql,$variableConexion);
  4.                 while($rs=mysql_fetch_array($consulta)){
  5.                     echo $rs['nombre'];
  6.                 }

Error:

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Lemite\index.php on line 120


Que cae en esta línea:
Código PHP:
Ver original
  1. while($rs=mysql_fetch_array($consulta)){

Creo que es el mismo error de antes...
  #4 (permalink)  
Antiguo 28/05/2013, 12:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Imprime el valor de mysql_error() o de otra forma vas a seguir perdiendo tiempo, entiende que no somos adivinos, si no aprendes a depurar tus errores no vas llegar lejos.

Dicha función precisamente nos indica que anda mal con las consultas que se ejecutan, en caso de fallar, deberías consultar el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/05/2013, 12:19
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Entonces no estas obteniendo datos desde tu tabla que cumplan con esa condición, intenta correr la consulta en tu motor de bases de datos a mano usando el valor que corresponde obviamente para la sesion usuario.

Dinos que pasa luego de eso.
Si obtenes datos entonces es porque aparentemente el valor que tenes en la sesion usuario no corresponde con alguno de los que tengas en tu tabla o que directamente no estes recibiendo valor para la sesion y sea vacío, por lo cual no obtendras resultado.
  #6 (permalink)  
Antiguo 28/05/2013, 12:20
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

prueba de esta manera y nos comentas que te muestra:
Código PHP:
Ver original
  1. $variableConexion = mysql_connect("localhost", "root", "");
  2.                 $sql = "SELECT nombre FROM reg_users WHERE [user]='$_SESSION[usuario]'";
  3.                 $consulta = mysql_query($sql,$variableConexion);
  4.                 while($rs=mysql_fetch_array($consulta)){
  5.                     echo $rs['nombre'];
  6.                 }
  #7 (permalink)  
Antiguo 28/05/2013, 12:38
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Vale, como ha dicho Pateketrueke he identificado el error con mysql_error() y me sale lo siguiente:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[user]='iEnrique'' at line 1

iEnrique es mi usuario y user es la columna donde aparecen todos los usuarios en mi db.

No entiendo lo que quieres decir rodrigo791, ¿puedes explicármelo paso a paso lo que tengo que hacer? :S Espero no ser muy pesado...
  #8 (permalink)  
Antiguo 28/05/2013, 13:01
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Cita:
Iniciado por iEnrique Ver Mensaje
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[user]='iEnrique'' at line 1
Ese error deriva del código que te acaban de dar, pésimo por cierto, así que no debería extrañarte.

Deberías probar con tu código anterior, ese es el error que nos interesa.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 28/05/2013, 13:03
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: Creo que lo tengo todo bien, ¿hay algo mal?

Para que te quede más claro: Los corchetes no tienen uso en MySQL... Sólo si quieres provocar un error de sintaxis (como el que lograste).

Se usan en SQL Server, Access, y alguno que otro. Pero no en MySQL.

Si separo la query, puedo decirte sin dudas que la misma no contiene errores de ningún tipo:
Código MySQL:
Ver original
  1. SELECT nombre
  2. FROM reg_users
  3. WHERE user='$_SESSION[usuario]'
Si PHP te da un error como el que describes sólo puede darse porque no la consulta no devuelva datos, porque no cumple con la condición del WHERE.
Eso puede ser porque no hay un dato como el buscado, porque hay problemas de charset, o bien la variable está vacía. Eso por empezar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 28/05/2013, 13:05
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Código PHP:
Ver original
  1. $variableConexion = mysql_connect("localhost", "root", "");
  2.                 $sql = "SELECT nombre FROM reg_users WHERE user='$_SESSION'usuario]'";
  3.                 $consulta = mysql_query($sql,$variableConexion);
  4.                 while($rs=mysql_fetch_array($consulta)){
  5.                     echo $rs['nombre'];
  6.                 }
proba usar mysql_error pero con esta consulta

Lo que dije anteriormente es que pruebes en el motor de base de datos que uses, por ejemplo si usas phpmyadmin viene con el motor de bases de datos mysql, podrias entrar y escribir manualmente tu la consulta SQL , algo como:
Código SQL:
Ver original
  1. SELECT nombre FROM reg_users WHERE USER='nombreUsuario'

y ver si obtenes resultados
Si obtenes resultados entonces es porque pueden pasar 2 cosas, 1 es que el valor de tu sesion por ejemplo "rodrigo" no este en ninguna fila de tu tabla reg_users entonces no vas a obtener filas, o la 2da opción es que directamente no te esté llegando el valor a la sesion usuario, o sea que sea vacío.
  #11 (permalink)  
Antiguo 28/05/2013, 13:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Para que te quede más claro: Los corchetes no tienen uso en MySQL... Sólo si quieres provocar un error de sintaxis (como el que lograste).
Tampoco hay que ser tan severo, no ha sido su idea, hay que darle algo de crédito a ambichol, que fue el de la mala "corrección".

Cita:
Iniciado por ambichol Ver Mensaje
prueba de esta manera y nos comentas que te muestra
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #12 (permalink)  
Antiguo 28/05/2013, 13:29
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: Creo que lo tengo todo bien, ¿hay algo mal?

Bueno , es cierto. Me falto un buen emoticón para aclarar la broma...

La idea es que si trataba de generar un fallo, es una buena opción. Y no es joda, haciendo testing hAgo cosas así todo el tiempo...


__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 28/05/2013, 13:49
 
Fecha de Ingreso: febrero-2013
Ubicación: Lima
Mensajes: 301
Antigüedad: 11 años, 2 meses
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

bueno, todos los proyectos que realize los hice con BD en SQL, y cuando especifico el user sin corchetes me muesta una variable del mismo SQL, por eso opine que se puede deber a eso.... creo que fue un error de sintaxis(confusion)...
gracias por la observacion....
  #14 (permalink)  
Antiguo 28/05/2013, 13:54
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Ya lo he solucionado gracias por vuestra ayuda y paciencia!
  #15 (permalink)  
Antiguo 28/05/2013, 14:00
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Se puede saber cual era el problema? iEnrique
  #16 (permalink)  
Antiguo 28/05/2013, 14:44
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Tenía las [] en user xDD
  #17 (permalink)  
Antiguo 28/05/2013, 14:46
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Jaja era obvio te lo estábamos diciendo arriba jaja, saludos!
  #18 (permalink)  
Antiguo 28/05/2013, 19:35
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: Creo que lo tengo todo bien, ¿hay algo mal?

Ten en cuenta que trabajar en SQL Server no es lo mismo que hacerlo en Oracle, DB2; Firebird, MySQL o PosgreSQL.
Si bien todos interpretan ANSI SQL, cada DBMS le pone o saca cosas según quieran (especialmente con el elnguaje de procedimientos), por lo que hay que ser muy cuidadoso al momento de empezar a realizar desarrollos con otro DBMS.

El Santo Manual de Referencia es tu Guía... Duerme con Él al lado del teclado.

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #19 (permalink)  
Antiguo 29/05/2013, 08:06
Avatar de iEnrique  
Fecha de Ingreso: abril-2013
Ubicación: España
Mensajes: 346
Antigüedad: 11 años
Puntos: 5
Respuesta: Creo que lo tengo todo bien, ¿hay algo mal?

Jajaja, muchas gracias :D

Etiquetas: mysql, select, sql, todo
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 18:30.