Foros del Web » Programando para Internet » PHP »

Un error de sintaxis que no se donde esta

Estas en el tema de Un error de sintaxis que no se donde esta en el foro de PHP en Foros del Web. Tentgo un problema, cuando quiero subir info a la base de datos. Mas exactamente dice You have an error in your SQL syntax; check the ...
  #1 (permalink)  
Antiguo 22/03/2008, 10:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Un error de sintaxis que no se donde esta

Tentgo un problema, cuando quiero subir info a la base de datos.

Mas exactamente dice 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 'drop ='69', slice ='99', ' at line 1
eso quiere decir que tengo un problema enel SET pero me fije tanto y tantas veces que no me doy cuenta donde esta, entonce pense que podia ser de otra parte pero tampoco.Buen dejo el code completo a ver si alguien se da cuenta donde esta el error



Código PHP:
          elseif($row["ent_1"]=="efectos")
      {
      
$efectos=$row["drop"] + $row["slice"];
      
           if (
$efectos<=35)     
     {
     
$agregar_drop=rand(4,3);         
     
$agregar_slice=rand(4,3);
     }
          elseif ( 
$efectos<=60 && $efectos>35)     
     {
     
$agregar_drop=rand(3,3);         
     
$agregar_slice=rand(3,3);         

     }
               elseif ( 
$efectos<=80 &&  $efectos>60)     
     {
     
$agregar_drop=rand(2,3);         
     
$agregar_slice=rand(2,3);     

     }
              
                   elseif ( 
$efectos<=120 &&  $efectos>80)     
     {
     
$agregar_drop=rand(2,2);         
     
$agregar_slice=rand(2,2);     

     }
                        elseif ( 
$efectos<=150 &&  $efectos>120)     
     {
     
$agregar_drop=rand(1,2);         
     
$agregar_slice=rand(1,2);         

     }
                            elseif ( 
$efectos<=175 && $efectos>120)     
     {
     
$agregar_drop=rand(1,1);         
     
$agregar_slice=rand(1,1);         

     }
                                 elseif ( 
$efectos <=175 &&  $efectos>200)     
     {
     
$agregar_drop=rand(-1,1);         
     
$agregar_slice=rand(-1,1);         

     }
    
    else
     {
     
$agregar_drop=rand(7,9);         
     
$agregar_slice=rand(7,9);
    }
    
    
     
$drop=$agregar_drop $row["drop"];         
     
$slice=$agregar_slice $row["slice"];
     
     
   if (
$drop>100)
   {
   
$numero=rand(-2,-4);
   
$drop=$drop+$numero;    
   }

   if (
$slice>100)
   {
   
$numero=rand(-2,-8);
   
$slice=$slice+$numero;    
   }
   
                      
                          

                                     
                
        
$query="UPDATE juego.user SET drop ='$drop', 
                                     slice ='$slice'
                                    WHERE id='$id'"
;
    
$resultado mysql_query($query,$db) or die (mysql_error());      
      } 



Creo que esta aca pero me fije tanto que no se

Código PHP:
        $query="UPDATE juego.user SET drop ='$drop', 
                                     slice ='$slice',
              WHERE id='$id'"


Última edición por luks77; 22/03/2008 a las 12:34
  #2 (permalink)  
Antiguo 22/03/2008, 11:33
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Un error de sintaxis que no se donde esta

hola, te sobra una coma ahi, es asi:
Código PHP:
$query="UPDATE juego.user SET drop ='$drop', 
               slice ='$slice'
               WHERE id='$id'"

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #3 (permalink)  
Antiguo 22/03/2008, 11:34
 
Fecha de Ingreso: abril-2007
Mensajes: 23
Antigüedad: 17 años
Puntos: 0
Re: Un error de sintaxis que no se donde esta

Hola,

Me parece que quieres asignar a las filas de la tabla el valor de una variable de PHP y lo estas colocando como fila='$variable' por lo que MySQL toma el valor literal de lo que estas colocando, es decir que si se trata de una fila VARCHAR la BD lo guarda $variable y no como el valor actual de esa variable.
En fin lo que tienes que hacer es concatenar a la cadena donde defines el query la variable que desees insertar, de esta manera:

Código PHP:
$query="UPDATE table SET fila1='".$variable."' WHERE id=19" 
El punto es el operador de concatenacion en PHP.

Espero que te sirva.
  #4 (permalink)  
Antiguo 22/03/2008, 11:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Un error de sintaxis que no se donde esta

Gracia pero me sigue sin quedar ahora lo puse asi:
Código PHP:
        $query="UPDATE juego.user SET drop =' ".$drop." ', 
                                     slice =' "
.$slice." '
                    WHERE id='"
.$id." ' "
Pero me sigue dando el mismo error. No se por que , igual yo los anteriores entrenamiento los ponia si el punto de concatenacion y me quedaba bien igual


Igual gracias pero continuo con el problema
  #5 (permalink)  
Antiguo 22/03/2008, 11:46
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Un error de sintaxis que no se donde esta

pues yo siempre lo he hecho asi y nunca me ha dado problemas, yo uso la concatenacion cuando asigno al campo a actualizar el valor de una variable llegada por $_POST o $_GET:
Código PHP:
<?php
$sql 
mysql_query ("UPDATE tabla SET campo = '"$_POST['var'] ."'"); // o $_GET['var']
?>
en este caso el error esta el la coma que sobra, si escribimos la consulta en una sola linea es facil darce cuenta:
Código PHP:
$query="UPDATE juego.user SET drop ='$drop', slice ='$slice' WHERE id='$id'"
saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #6 (permalink)  
Antiguo 22/03/2008, 12:26
 
Fecha de Ingreso: marzo-2007
Mensajes: 347
Antigüedad: 17 años, 1 mes
Puntos: 2
Re: Un error de sintaxis que no se donde esta

Luks para mi lo que dice vmgafrm de que es un problema de concatenacion no es correcto, ya que muchas veces he hecho consultas de la manera que tu lo has planteado hay con las ' ' dentro del string y no me ha dado problemas, para mi el problema es otro aunque lo tengo que investigar.
  #7 (permalink)  
Antiguo 22/03/2008, 12:33
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Un error de sintaxis que no se donde esta

Las coma la puse yo aca por confusion en el codigo de mi pc no esta la coma y tambien me da error el problema es otro
  #8 (permalink)  
Antiguo 22/03/2008, 12:34
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Un error de sintaxis que no se donde esta

claro, en este caso las comillas dobles tienen mayor precedencia, por eso la variable guarda su valor normalmente, lo que este dentro de las ya mencionadas comillas dobles es puro SQL, si no, copia y pega ese codigo en phpmyadmin, dentro de tu BD en la opcion SQL y se ejecutara la consulta normalmente:
Código PHP:
UPDATE juego.user SET drop ='un_valor'slice ='otro_valor' WHERE id='15'
saludetes
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #9 (permalink)  
Antiguo 22/03/2008, 12:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 274
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Un error de sintaxis que no se donde esta

Cita:
Iniciado por rogertm Ver Mensaje
claro, en este caso las comillas dobles tienen mayor precedencia, por eso la variable guarda su valor normalmente, lo que este dentro de las ya mencionadas comillas dobles es puro SQL, si no, copia y pega ese codigo en phpmyadmin, dentro de tu BD en la opcion SQL y se ejecutara la consulta normalmente:
Código PHP:
UPDATE juego.user SET drop ='un_valor'slice ='otro_valor' WHERE id='15'
saludetes
Me sigue tirando error tambien en la consola de MySQL me da el mismo que les dije
  #10 (permalink)  
Antiguo 22/03/2008, 12:52
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Un error de sintaxis que no se donde esta

@todos,el problema es la palabra drop. En la tabla hace referencia a un campo, pero en realidad es mucho más que eso. Es parte de varias sentencias (DROP TABLE, DROP USER, DROP DATABASE, etc etc..). Por eso no puedes usarlo así directamente en una consulta SQL. Lo mismo sucede cuando hay campos llamados desc, order, select, etc. La solución está en indicarle a MySQL que estás referenciando a una columna y no a una instrucción SQL.

En estos casos el nombre del campo "problema" debe ir entre signos de tilde [``]:

Código PHP:
$query "UPDATE juego.user SET `drop`='$drop', slice ='$slice' WHERE id='$id'"
Lo de la coma no está demás, ya que también habría producido error.

Algo práctico en estos casos es fijarse en el error en sí que se produce:

Cita:
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 'drop ='69', slice ='99', ' at line 1
Lo que está entre comillas simples después de ...for the right sintax to use near es la parte que está produciendo el error, generalmente es lo primero que aparece, en este caso, el drop.

Un saludo,
  #11 (permalink)  
Antiguo 22/03/2008, 12:55
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Un error de sintaxis que no se donde esta

mmmm, seguro que no tienes la coma??? aqui dice que el error es en la linea 1
Cita:
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 'drop ='69', slice ='99', ' at line 1
y en la linea ! del codigo que muestras lo que tienes es:
Código PHP:
UPDATE juego.user SET drop ='$drop'
y segun el mensaje de error, la cosa esta en:
Cita:
'drop ='69', slice ='99', '
si te fijas hay una coma, mira bien, que estas cosas suelen pasar, a mi me ha pasado asi y al final es una mie***

saludos y suerte
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
  #12 (permalink)  
Antiguo 22/03/2008, 13:01
Avatar de rogertm
Mod->Cuba
 
Fecha de Ingreso: julio-2005
Ubicación: /home/Cuba/Habana/rogertm/
Mensajes: 2.922
Antigüedad: 18 años, 8 meses
Puntos: 638
Re: Un error de sintaxis que no se donde esta

Cita:
Iniciado por okram Ver Mensaje
@todos,el problema es la palabra drop. En la tabla hace referencia a un campo, pero en realidad es mucho más que eso. Es parte de varias sentencias (DROP TABLE, DROP USER, DROP DATABASE, etc etc..). Por eso no puedes usarlo así directamente en una consulta SQL. Lo mismo sucede cuando hay campos llamados desc, order, select, etc. La solución está en indicarle a MySQL que estás referenciando a una columna y no a una instrucción SQL.

[...]

Un saludo,
valla, yo la miraba y me decia, sera??? pero como nunca antes choque con algo asi, pues ni hable...
pero me paso una vez creando una tabla que el nombre lo ponia asi:
Código PHP:
CREATE TABLE pre-nombretabla 
y me daba error, hasta que cambie el guion "-" por un guion bajo "_"

otra vez lo dicho:
Cita:
no te acostaras sin antes aprender algo nuevo
por rogertm
__________________
Friki y Blogger por Cuenta Propia:213
Twenty'em: Theming is Prose
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:18.