neurino
2014-03-11 07:57:49 UTC
Caro Radicale,
ho uno stupidissimo problema di database che non riesco a risolvere. Mi aiuti?
Sto cercando di inserire in una tabella DBI:sqlite la seguente stringa
(con le virgolette singole incluse!)
'../data/aerosol/spher.print_biomass_440_uvai'
La stringa e' salvata in una hash del tipo
phase => {
vals => ['" ../data/aerosol/spher.print_biomass_440_uvai] "']
}
e viene richiamata nella variabile $snm (vedi la linea sotto).
Purtroppo nessuna delle seguenti linee ci riesce. Entrambe le 2
varianti falliscono:
(variante 1)
$DBfh->do("insert into ${TBnm} values( '$scnt', '$snm', '$sts',
'$filt', '$jobt' ) ");
(variante 2)
$DBfh->do(qq{insert into ${TBnm} values( '$scnt', '$snm', '$sts',
'$filt', '$jobt' )});
ottengo sullo STDOUT:
$> DB SCIAUVAIproc.db/SCIAUVAIproc/insert(INI) near ".": syntax error(1)
il "." e' la variable $sts, quella appena dopo $snm, dove c'e' la
stringa incriminata.
Infatti l'output finale dovrebbe essere (sqlite> select * from SCIAUVAIproc)
37|alb=0.30__cth=3.0__tau=3.0__phase='../data/aerosol/spher.print_biomass_440_uvai'|.|0|0
e non (notare l'assenza di virgolette in phase)
37|alb=0.30__cth=3.0__tau=3.0__phase=../data/aerosol/spher.print_biomass_440_uvai|.|0|0
Neanche dei placeholders mi aiutano:
$DBfh->do("insert into ${TBnm} values(?, ?, ?, ?, ?)", '$scnt', '$snm',
'$sts', '$filt', '$jobt' );
Qui ottengo una hash non dereferenziata (cioe' il suo puntatore e non
il valore che mi serve).
Il problema sono esclusivamente le virgolette. Senza virgolette singole
' tutto funziona a meraviglia.
Soluzioni?
ho uno stupidissimo problema di database che non riesco a risolvere. Mi aiuti?
Sto cercando di inserire in una tabella DBI:sqlite la seguente stringa
(con le virgolette singole incluse!)
'../data/aerosol/spher.print_biomass_440_uvai'
La stringa e' salvata in una hash del tipo
phase => {
vals => ['" ../data/aerosol/spher.print_biomass_440_uvai] "']
}
e viene richiamata nella variabile $snm (vedi la linea sotto).
Purtroppo nessuna delle seguenti linee ci riesce. Entrambe le 2
varianti falliscono:
(variante 1)
$DBfh->do("insert into ${TBnm} values( '$scnt', '$snm', '$sts',
'$filt', '$jobt' ) ");
(variante 2)
$DBfh->do(qq{insert into ${TBnm} values( '$scnt', '$snm', '$sts',
'$filt', '$jobt' )});
ottengo sullo STDOUT:
$> DB SCIAUVAIproc.db/SCIAUVAIproc/insert(INI) near ".": syntax error(1)
il "." e' la variable $sts, quella appena dopo $snm, dove c'e' la
stringa incriminata.
Infatti l'output finale dovrebbe essere (sqlite> select * from SCIAUVAIproc)
37|alb=0.30__cth=3.0__tau=3.0__phase='../data/aerosol/spher.print_biomass_440_uvai'|.|0|0
e non (notare l'assenza di virgolette in phase)
37|alb=0.30__cth=3.0__tau=3.0__phase=../data/aerosol/spher.print_biomass_440_uvai|.|0|0
Neanche dei placeholders mi aiutano:
$DBfh->do("insert into ${TBnm} values(?, ?, ?, ?, ?)", '$scnt', '$snm',
'$sts', '$filt', '$jobt' );
Qui ottengo una hash non dereferenziata (cioe' il suo puntatore e non
il valore che mi serve).
Il problema sono esclusivamente le virgolette. Senza virgolette singole
' tutto funziona a meraviglia.
Soluzioni?