Foros del Web » Programando para Internet » PHP »

Error en UPDATE

Estas en el tema de Error en UPDATE en el foro de PHP en Foros del Web. Hola: Tengo el siguiente codigo: Código PHP: $sql  =  mysql_query ( "SELECT * FROM goles ORDER BY id ASC" ) or die( "while $sql <br>MySQL dice: " . mysql_error ()); while( $row = mysql_fetch_array ( $sql )){ if (! ...
  #1 (permalink)  
Antiguo 01/03/2005, 08:02
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Error en UPDATE

Hola:

Tengo el siguiente codigo:
Código PHP:
$sql mysql_query("SELECT * FROM goles ORDER BY id ASC") or die("while $sql <br>MySQL dice: ".mysql_error());
while(
$row=mysql_fetch_array($sql)){
if (!
$row[url] || $row[url] == "-") {
$i $row[id];
$url $_POST[$i._gol];
$desc $_POST[$i._desc];
$id $_POST[$i._id];
$sqla mysql_query("UPDATE goles SET url = '".$url."' , desc = '".$desc."' where id = $id") or die("UPDATE $sqla <br>MySQL dice: ".mysql_error());
}

Que me tira 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 'desc = 'probando' where id = 1' at line 1

El problema es que no se porque lo tira, en todos los Updates que hago (más de 50) uso el mismo codigo y funciona a la perfección, aqui me envia ese error y no se porque... Las variables las setea bien (he probado con echo...) y la verdad ya no se que hacer, estuve probando toda la mañana...

Ademas el mensaje de error que me envia es como que "se come" la parte de url = xxx y pasa directo al segundo campo (desc).

Si alguien me ayuda...
__________________
I Love Programming...
  #2 (permalink)  
Antiguo 01/03/2005, 08:06
 
Fecha de Ingreso: marzo-2004
Mensajes: 44
Antigüedad: 13 años, 8 meses
Puntos: 0
yo el WHERE lo pongo en Mayusculas porque alguna q otra vez me tira error, depende del query q haga.. no se si es asi, o mi mysql esta loco:)
  #3 (permalink)  
Antiguo 01/03/2005, 08:18
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Mi mysql nunca me ha pedido que sea en mayusculas el WHERE, igualmente ya he probado poner WHERE, SET, etc en mayusculas, el error esta haciendo referencia a otra cosa...
__________________
I Love Programming...
  #4 (permalink)  
Antiguo 01/03/2005, 08:54
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,
Cita:
Ademas el mensaje de error que me envia es como que "se come" la parte de url = xxx y pasa directo al segundo campo (desc).
No se lo come, si lo lees bien te dice algo asi como "tienes un error de sintaxis cerca de 'desc='.....". Ese cerca realmente quiere decir antes.

Y si una consulta te funciona unas veces si, y otras veces mal, y solo cambian los datos, puede que el problema sean los datos, que contengan caracteres no permitidos.

Haz un echo de la consulta que intentas ejecutar, e intenta copiar esa consulta en un administrador de mysql (phpmyadmin, por ejemplo).

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 01/03/2005, 09:03
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
No no, la consulta no es que funciona aveces y aveces no, uso el codigo en muchos archivos para generar mis updates, pero al escribir este archivo no me funciona.

Se que dice que hay un error de sintaxis antes del desc=, pero cual es? yo no veo ninguno... ademas, así lo uso en todos mis updates...

Los datos que ingreso son solo texto.. la idea es que tengo que ingresar el nombre de un archivo, por ejemplo: mimusica.mp3, luego me dije, quizas el . (punto) este causando el problema, use texto plano (mimusicamp3) y el error sigue...

Ahora voy a ver eso que dices de copiar la consulta en phpmyadmin (que gano con esto?, nunca lo he usado).
__________________
I Love Programming...
  #6 (permalink)  
Antiguo 01/03/2005, 10:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ojo con las palabras reservadas de Mysql (http://dev.mysql.com/doc/mysql/en/reserved-words.html). . por ejemplo DESC es reservada .. Si crees que vas a usar palabras reservadas tendrías que usar `nombre campo´ o `nombrecampo` (ahora no recuerdo para que lado va el "apostofre").

Código PHP:
$sqla mysql_query("UPDATE goles SET url = '".$url."' , `desc` = '".$desc."' where id = $id") or die("UPDATE $sqla <br>MySQL dice: ".mysql_error()); 
Un saludo,
  #7 (permalink)  
Antiguo 01/03/2005, 10:29
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Dios, Cluster, eres mi DIOS!

Ya me estaba quedando ciego =/

Todavia no entiendo bien cuando hay que usar los apostofres, es decir, si el Update (o INSERT, o lo que sea) lo hago dentro de, por ejemplo, un while en donde uso DESC, ASC, o similar, debo poner los campos con `` ??

Todos los otros codigos que uso los hago dentro de un while, pero este while no es generado por MySQL (como en esta ocación) sino que es solo un $i <= $max..., por ello debe ser que nunca me dio error.

Ahora me voy a leer el articulo sobre palabras reservadas.

Muchas gracias a todos.
__________________
I Love Programming...
  #8 (permalink)  
Antiguo 01/03/2005, 13:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Los apostrofes los tendríamos que usar (me incluyo .. pues no lo hago habitualmente) cuando nos referimos en una sentencia SQL a un nombre de campo .. para no confundir con una palabra reservada o incluso si tiene espacios o caracteres "raros".

Un saludo,
  #9 (permalink)  
Antiguo 01/03/2005, 14:10
Avatar de FuLaNo_  
Fecha de Ingreso: mayo-2003
Ubicación: Don Torcuato, Buenos Aires, Argentina
Mensajes: 1.250
Antigüedad: 14 años, 6 meses
Puntos: 2
Se aplica siempre?, es decir:
mysql_query("SELECT * FROM tabla WHERE `id` = 1");
mysql_query("UPDATE tabla SET `campo_1` = xxx, `campo_2` = xxx WHERE `id` = 1");

Hasta en un INSERT? en ese caso seria:
$sql = "INSERT INTO tabla (`campo`)";
$sql .= "VALUES ('$var')";

??, creo que este ultimo esta mal.

Por otra parte, hay algún articulo sobre palabras reservadas en Español?
__________________
I Love Programming...
  #10 (permalink)  
Antiguo 02/03/2005, 05:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si, .. se debería aplicar siempre .. y no sólo con los nombres de campos .. sino con nombres de tablas también.

Sobre esa documentación en Castellano .. lo desconozco .. usa el mismo google para traducir dicha página. Lamentablemente el manual oficial de Mysql no está en castellano. Pero, tienes sitios como www.mysql-hispano.com que algunos artículos, manuales y tutoriales sobre Msyql tienen en castellano muy interesantes (no sé si en concreto hablará alguno sobre todo esto de las palabras reservadas .. pero de igual forma es recomendable que lo tengas presente).

Un saludo,
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:37.