Foros del Web » Programando para Internet » PHP »

No encuentro el error de sintaxis!!

Estas en el tema de No encuentro el error de sintaxis!! en el foro de PHP en Foros del Web. Tengo un error en algun lado.. y no logro darme cuenta de donde esta el error... al ejecutar la consulta, me fijgura el siguiente error ...
  #1 (permalink)  
Antiguo 04/01/2013, 08:11
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 0
No encuentro el error de sintaxis!!

Tengo un error en algun lado.. y no logro darme cuenta de donde esta el error... al ejecutar la consulta, me fijgura el siguiente error

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 'usuario'" at line 1

El tema es que en la linea Nº 1 no tengo codigo PHP ni nada raro...

EL sistema es un control de asistencia.
Un usuario inicia sesion (un jefe de area), luego se verifica de que area es jefe, y luego hago otra consulta donde traigo todos los empleados que estan registrados como que trabajan en esa Area donde el titular es el usuario que inicio sesion.


Les paso el codigo asi me ayudan de ser posible.
Muchas gracias!

<?php
include('config.php');
session_start();
if($_SESSION['logueado'] != "SI"){
header('location: index.php');
exit();
}
$usuario= $_SESSION['usuario'];
$dependencia= "SELECT titular FROM dependencias WHERE titular='".$_SESSION['usuario']."'";
$sql = "SELECT * FROM personal WHERE dependencia='".$dependencia."'";
$res = mysql_query($sql, $link) or die(mysql_error());

?>
Luego de hacer la consulta, hago un listado con el resultado ($res) para saber cuales son los empleados sobre los que el jefe debe informar la asistencia.
  #2 (permalink)  
Antiguo 04/01/2013, 08:14
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: No encuentro el error de sintaxis!!

mostranos el codigo donde usas: nombre_usuario
fijate si la estructura de la tabla tiene los mismos nombres
  #3 (permalink)  
Antiguo 04/01/2013, 08:27
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No encuentro el error de sintaxis!!

Perdón, no es Nombre_usuario.. sino que es usuario solo.. recién lo edite.
Las tablas están bien, los campos también...
EL usuario (o la variable $_SESSION['usuario'] ) viene de index.php, que es donde el usuario inicia sesión.
Una vez que inicia sesión, redirige a asistencia.php que es donde se me genera el error.
No se si se entendio, en tal caso subo todo el codigo incluyendo el index asi lo ven. Gracias!
  #4 (permalink)  
Antiguo 04/01/2013, 08:33
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No encuentro el error de sintaxis!!

Lo que me llama la atención es que, en la parte en que menciona el valor de la variable usuario, hay una comilla de más...

... MySQL server version for the right syntax to use near 'usuario'" at line 1 ....
  #5 (permalink)  
Antiguo 04/01/2013, 08:38
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: No encuentro el error de sintaxis!!

si ya asignaste la variable de sesion aqui
Cita:
$usuario= $_SESSION['usuario'];
utilizala en el query
Cita:
$dependencia= "SELECT titular FROM dependencias WHERE titular='".$usuario."'";
en todo caso despues del query imprime la variables de los query

Cita:
print $dependencia."<br>";
$sql=etc...
print $sql;
y asi veras como esta formando la sentencia
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #6 (permalink)  
Antiguo 04/01/2013, 08:40
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No encuentro el error de sintaxis!!

Cita:
Iniciado por cleguisamon Ver Mensaje
Perdón, no es Nombre_usuario.. sino que es usuario solo.. recién lo edite.
Las tablas están bien, los campos también...
EL usuario (o la variable $_SESSION['usuario'] ) viene de index.php, que es donde el usuario inicia sesión.
Una vez que inicia sesión, redirige a asistencia.php que es donde se me genera el error.
No se si se entendio, en tal caso subo todo el codigo incluyendo el index asi lo ven. Gracias!
Por lo visto y lo que estuve probando.. el error esta aca
$dependencia= "SELECT titular FROM dependencias WHERE titular='".$_SESSION['usuario']."'";

pero no lo encuentro !
  #7 (permalink)  
Antiguo 04/01/2013, 08:47
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: No encuentro el error de sintaxis!!

Cita:
Iniciado por cleguisamon Ver Mensaje
Por lo visto y lo que estuve probando.. el error esta aca
$dependencia= "SELECT titular FROM dependencias WHERE titular='".$_SESSION['usuario']."'";

pero no lo encuentro !
y ya hiciste lo que te comente ? cambiar la variable e imprimir los querys para que veas como los esta formando,

podria colocar que es lo que te imprimen los querys para darnos una idea de como se esta formando
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #8 (permalink)  
Antiguo 04/01/2013, 08:52
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No encuentro el error de sintaxis!!

Cita:
Iniciado por PIRRUMAN Ver Mensaje
y ya hiciste lo que te comente ? cambiar la variable e imprimir los querys para que veas como los esta formando,

podria colocar que es lo que te imprimen los querys para darnos una idea de como se esta formando
Si ahi lo hice... y me da este resultado


SELECT nombre FROM dependencias WHERE titular='perezj'

SELECT usuario FROM personal WHERE dependencia='SELECT nombre FROM dependencias WHERE titular='perezj''

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 'perezj''' at line 1

La consulta se esta haciendo correctamente, pero el valor de la variable $dependencia esta mal... ya que contiene toda la consulta y no el valor que esa consulta deja.
  #9 (permalink)  
Antiguo 04/01/2013, 08:56
Avatar de CoriaWeb  
Fecha de Ingreso: septiembre-2012
Ubicación: Coria del Río - Sevilla
Mensajes: 1.795
Antigüedad: 11 años, 7 meses
Puntos: 130
Respuesta: No encuentro el error de sintaxis!!

Haber si es que estas mandando alguna comilla en el nombre de usuario, prueba a usar mysql_real_escape_string() para escaparlo, aglo asi..:

Código PHP:
Ver original
  1. $dependencia= "SELECT titular FROM dependencias WHERE titular='".mysql_real_escape_string($_SESSION['usuario'])."'";
__________________
Hosting de Calidad
Servidores Dedicados Administrados
CoriaWeb.hosting
  #10 (permalink)  
Antiguo 04/01/2013, 08:57
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 2 meses
Puntos: 53
Respuesta: No encuentro el error de sintaxis!!

Cita:
SELECT usuario FROM personal WHERE dependencia='SELECT nombre FROM dependencias WHERE titular='perezj''
para hacer subconsultas debes colocarlas entre parentesis y no comillas simples

Cita:
SELECT usuario FROM personal WHERE dependencia=(SELECT nombre FROM dependencias WHERE titular='perezj')
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #11 (permalink)  
Antiguo 04/01/2013, 09:26
 
Fecha de Ingreso: diciembre-2012
Mensajes: 33
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No encuentro el error de sintaxis!!

Que grosos!!! ahí funciono!!! Muchas Gracias por la ayuda!! Un abrazo
  #12 (permalink)  
Antiguo 04/01/2013, 09:46
Avatar de rodno  
Fecha de Ingreso: enero-2009
Ubicación: En algun lugar de Cuba
Mensajes: 426
Antigüedad: 15 años, 2 meses
Puntos: 43
Respuesta: No encuentro el error de sintaxis!!

Buenas,

Asi obtienes mejor rendimiento

SELECT usuario FROM personal INNER JOIN dependencias ON personal.dependencia = dependencias.nombre WHERE dependencias.titular='perezj'


Saludos
__________________
"No te preocupes si no funciona bien. Si todo lo hiciera, no tendrías trabajo."
"El problema no es no saber, sino no saber quién sabe"
..::Con Karma se piensa mejor::..

Etiquetas: encuentro, mysql, sql, usuarios
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 06:13.