• Publicidad

Paso de lista de valores a sentencia SQL

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Paso de lista de valores a sentencia SQL

Notapor nereha » 2009-07-16 15:41 @695

Hola chicos, a ver si me echáis un cable...

Tengo esta línea de código, que me devuelve el valor ascii de cada uno de los caracteres que contiene la variable $buf.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
print ord($_)," " foreach split //, $buf;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

(es decir, esto me devuelve un valor del formato 110 213 12 31)

Mi problema lo tengo en que necesito guardar ese resultado (110 213 12 31) en una tabla de MySQL, y por más vueltas que le doy no consigo confeccionar la sentencia SQL; he probado de todo y nada...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $sql = qq{ insert into localiza (localiza) values ('. print ord($_)," " foreach split //, $buf;     .') };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


He pensado también en asignar primero el valor a una variable y después poner la variable en la sentencia sql, algo como esto: (pero tampoco)
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $variable= ord($_)," " foreach split //, $buf;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Os agradezco cualquier ayuda... Muchas gracias.
nereha
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-06-21 14:48 @658

Publicidad

Re: Paso de lista de valores a sentencia SQL

Notapor kidd » 2009-07-16 16:00 @709

Hola,

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $buf="abcd";
  2.  
  3. my @chars;
  4.  
  5. for my $char( split //, $buf ){
  6.     push @chars, ord($char);
  7. }
  8.  
  9. my $string = join ",", map{ "'$_'" } @chars;
  10.  
  11. print $string;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



El resultado será:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. '97','98','99','100' 


Esto ya lo podrás meter dentro de tu sentencia SQL.
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Re: Paso de lista de valores a sentencia SQL

Notapor explorer » 2009-07-16 16:01 @709

Yo veo dos problemas...

El primero es fácil de ver: estás intentando guardar una lista de valores en una variable escalar, que solo puede guardar uno. Lo correcto es usar un arreglo.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my @valores = map { ord $_ } split //, $buf;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Además, hemos cambiado el for() por un map(). El funcionamiento es el siguiente: el split() divide los caracteres de $buf y los va pasando uno a uno al map(), que ejecuta ord() en cada uno, devolviendo la lista de todos los valores, que son almacenados en el arreglo.

El segundo problema es la forma de guardar los valores en la base de datos.

No me queda claro cómo quieres guardar esos valores: ¿quieres guardar la lista de valores en un solo campo de la base de datos? ¿o quieres guardar cada valor en distintos registros de la base de datos?

Por la sentencia SQL que pones, parece que se trata de la primera opción.

Si, suponemos, que queremos guardar la lista de valores como una cadena de caracteres, en que los valores están separados por un espacio en blanco, podemos confeccionarlo antes:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $valor = join ' ', @valores;
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y ahora ya podemos construir la sentencia SQL:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $sql = qq{ insert into localiza (localiza) values ('$valor') };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Paso de lista de valores a sentencia SQL

Notapor nereha » 2009-07-16 17:32 @772

¡Muchísimas gracias! ¡¡¡¡¡¡por fin!!!!!! Llevaba con esto desde las 9 de la mañana, de verdad muchísimas gracias ;)
nereha
Perlero nuevo
Perlero nuevo
 
Mensajes: 3
Registrado: 2008-06-21 14:48 @658


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: Google [Bot] y 0 invitados

cron