Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Otros Temas » Bases de Datos » Problema con UPDATE en MySQL Responder al tema
Nuevo tema


Página 1 de 1  [ 4 mensajes ] 
 
Nota 2011-10-07 09:42 @445

Perlero Frecuente
Registrado: 2011-04-04 10:06 @462
Mensajes: 133
Problema con UPDATE en MySQL
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:


Syntax: [ Download ] [ Hide ]
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. }


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

Syntax: [ Download ] [ Hide ]
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.)



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

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my $sth = $conexion->prepare("UPDATE $tabla SET comentario=$coment WHERE palabra=$palabra");
  2.        
  3. $sth->execute();


Nota 2011-10-07 09:58 @457
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con UPDATE en MySQL
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:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
  1. my $sth = $conexion->prepare("UPDATE $tabla SET comentario=? WHERE palabra=?");
  2.  
  3. $sth->execute($coment, $palabra);


Y MySQL se ocupará de "escapar" los caracteres peligrosos, como los espacios en blanco.

_________________
JF^D Perl programming


Nota 2011-10-07 10:32 @480

Perlero Frecuente
Registrado: 2011-04-04 10:06 @462
Mensajes: 133
Re: Problema con UPDATE en MySQL
Acabo de encontrar otra solución que en realidad era fallo mio. Faltan las comillas simples en '$palabra' y en '$coment'.


Nota 2011-10-07 11:59 @541
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Re: Problema con UPDATE en MySQL
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


Responder al tema  [ 4 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO