Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: soru13 en 14 Mayo 2012, 22:00 pm



Título: error sintaxis INSERT INTO
Publicado por: soru13 en 14 Mayo 2012, 22:00 pm
hola,tengo el siguiente código y me da error al insertar un registro a la base de datos y no sé porqué, llevo un rato y nada, aver si ustedes saben porqué:

el error es este:

Código:
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 'long,nombre,desc,id_anuncio) 
VALUES ('40.356879','-3.9006689999999935','nombre',' at line 1

Código
  1.  
  2. <?php
  3. if(empty($_SESSION['idusuario'])){
  4. header("location:../index.php");
  5. }else{
  6. $id_usuario = $_SESSION['idusuario'];
  7. $id_anuncio = $_GET['id'];
  8. }
  9. ?>
  10.  
  11.    <?php
  12. if(isset($_POST['new_posicion'])){
  13. include("../../config.php");
  14. $latitud = $_POST['lat'];
  15. $longitud = $_POST['lng'];
  16. $link = mysql_connect($dbhost,$dbuser,$dbpass);
  17. mysql_select_db($db, $link);
  18. $result = mysql_query("SELECT * FROM anuncios WHERE id_user = $id_usuario ORDER BY id DESC LIMIT 1", $link);
  19. while($row = mysql_fetch_array($result)){
  20. $nombre = $row['nombre'];
  21. $des = $row['presentacion'];
  22. }
  23. //cortamos la presentación a 150 carácteres.
  24. $cantidadCaracteres = 150;
  25. $subcadena = substr($des,0,$cantidadCaracteres);
  26. $indiceUltimoEspacio = strrpos($subcadena," ");
  27. $des = substr($des,0, $indiceUltimoEspacio);
  28. $des = $des." [...]";
  29. //AGREGAMOS LOS DATOS A LA BD
  30. $agregar = mysql_query("INSERT INTO mapa (lat,long,nombre,desc,id_anuncio) VALUES ('$latitud','$longitud','$nombre','$des','$id_anuncio')", $link);
  31. if($agregar == true){
  32. echo "OK";
  33. }else{
  34. echo mysql_error();
  35. }
  36. }else{
  37. ?>
  38.    <table width="100%" border="0" cellspacing="10">
  39.    <tr><td align="center"><div id="markerStatus" style="visibility:hidden;"></div>
  40.    <div class="div"><font size="+3">Arrastra el marcador hasta tu localizaci&oacute;n de trabajo.</font></div></td></tr>
  41.      <tr>
  42.        <td align="center"><div id="mapCanvas"></div></td>
  43.      </tr>
  44.      <tr>
  45.        <td align="center"><div id="infoPanel">
  46.        <form name="posiciones" action="?id=<?php echo $id_anuncio; ?>&guardar" method="post">
  47.        <input type="submit" name="new_posicion" id="button" value="Aceptar"><br>
  48.        <input type="text" name="lat" style="visibility:hidden;"/>
  49.        <input type="text" name="lng" style="visibility:hidden;"/>
  50.        </form>
  51.        </div></td>
  52.      </tr>
  53.      <tr>
  54.        <td>&nbsp;</td>
  55.      </tr>
  56.    </table>
  57.        <?php } ?>
  58.  
  59.  

Ninguna variable está vacía.

la tabla es la siguiente:

id    int(100)
lat    varchar(500)
long    varchar(500)
nombre    varchar(50)
desc    text
id_anuncio    int(100)

Gracias y un saludo!



Título: Re: error sintaxis INSERT INTO
Publicado por: Shell Root en 15 Mayo 2012, 15:31 pm
Simplemente mira wque contiene la query... y la verificas en el motor de base de datos directamente.


Título: Re: error sintaxis INSERT INTO
Publicado por: HdM en 15 Mayo 2012, 16:00 pm
Buenas.

Estás haciendo uso de palabras reservadas como nombres de campo en la tabla que intentas actualizar.

Citar
la tabla es la siguiente:

id    int(100)
lat    varchar(500)
long    varchar(500)
nombre    varchar(50)
desc    text
id_anuncio    int(100)

http://dev.mysql.com/doc/refman/5.0/es/reserved-words.html (http://dev.mysql.com/doc/refman/5.0/es/reserved-words.html)

Saludos.


Título: Re: error sintaxis INSERT INTO
Publicado por: soru13 en 15 Mayo 2012, 16:40 pm
Buenas.

Estás haciendo uso de palabras reservadas como nombres de campo en la tabla que intentas actualizar.

http://dev.mysql.com/doc/refman/5.0/es/reserved-words.html (http://dev.mysql.com/doc/refman/5.0/es/reserved-words.html)

Saludos.

en efecto, era por usar esas palabras reservadas, ni me había parado a pensarlo.

Muchas gracias por tu ayuda Bulld0z3r.  ;-)