• Publicidad

Problema con UPDATE en MySQL

Todo acerca de las bases de datos que existen: SQL, MySQL, Oracle, Postgres, CSV, etc.

Problema con UPDATE en MySQL

Notapor Txemaracas » 2011-10-07 09:42 @445

Hola estoy teniendo problemas para poder actualizar la información que contiene una de las tablas de mi base de datos. Quiero poder introducir un comentario pero no sé qué pasa que no me lo inserta:


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $conexion = ConectarDBrss->connect();
  2.        
  3. $conexion->{'mysql_client_found_rows'}=1; #disable
  4.    
  5. my $palabra = "hello";
  6.  
  7. my $tabla = "traduc";
  8.  
  9. my $coment = $ventanaAC->textfieldac->Text();
  10.  
  11. eval  {$conexion->do("UPDATE $tabla SET comentario=$coment WHERE palabra=$palabra")};
  12.        
  13. if ($@) {
  14.  
  15.            printf("No se ha podido introducir\n")
  16.  
  17. }
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


La línea 3 la he incluido por lo que pone en CPAN:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
mysql_client_found_rows

Enables (TRUE value) or disables (FALSE value) the flag CLIENT_FOUND_ROWS while connecting to the MySQL server. This has a somewhat funny effect: Without mysql_client_found_rows, if you perform a query like

  UPDATE $table SET id = 1 WHERE id = 1

then the MySQL engine will always return 0, because no rows have changed. With mysql_client_found_rows however, it will return the number of rows that have an id 1, as some people are expecting. (At least for compatibility to other engines.)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4



He utilizado también esto pero es que no me devuelve ningún error:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $sth = $conexion->prepare("UPDATE $tabla SET comentario=$coment WHERE palabra=$palabra");
  2.        
  3. $sth->execute();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Publicidad

Re: Problema con UPDATE en MySQL

Notapor explorer » 2011-10-07 09:58 @457

Si la variable $coment o la variable $palabra contienen espacios en blanco, entonces ese es el problema: la sentencia SQL queda desordenada.

Siempre es mejor usar contenedores:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $sth = $conexion->prepare("UPDATE $tabla SET comentario=? WHERE palabra=?");
  2.  
  3. $sth->execute($coment, $palabra);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y MySQL se ocupará de "escapar" los caracteres peligrosos, como los espacios en blanco.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Problema con UPDATE en MySQL

Notapor Txemaracas » 2011-10-07 10:32 @480

Acabo de encontrar otra solución que en realidad era fallo mio. Faltan las comillas simples en '$palabra' y en '$coment'.
Txemaracas
Perlero nuevo
Perlero nuevo
 
Mensajes: 136
Registrado: 2011-04-04 10:06 @462

Re: Problema con UPDATE en MySQL

Notapor explorer » 2011-10-07 11:59 @541

Esa solución no te salvará de los hackers... Por eso la solución de los contenedores es la que se debe usar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bases de datos

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados