Newsgroup: it.comp.www.php
Titolo: Database : e se c'è sia ' che " come faccio ?

Ciao a tutti,
come faccio ad inserire in un db una istruzione di questo tipo :
$ssql = "UPDATE TABLE SET CAMPO='$CAMPO' WHERE CAMPO='$CAMPO'";
dove in $CAMPO potrei avere una cosa di questo tipo :
IL VALORE INSERITO COME "PROVA" IN CAMPO E' INVALIDO
quindi una stringa con sia ' che " , ma che php provvede a sistemarmi in
questo modo
IL VALORE INSERITO COME \"PROVA\" IN CAMPO E' INVALIDO
che appunto non funziona a causa di E' che fa chiudere prima la stringa
nell'sql ? Inoltre è chiaro che registrandomi il valore con le virgolette
sostituite da \" la cosa non va comuque bene...
Qualche idea ? Grazie a tutti.
Ah ! Uso Interbase.
--
RaSca
http://web.tiscalinet.it/rascasoft

 
http://web.tiscalinet.it/rascasoft
Ma non capisco tutti questi problemi con ' e "...
$CAMPO = "se scrivo un apice \" o l'altro apice \' basta mettere lo slash
davanti a tutti e due.";
Pero' questo č un caso raro.. quando mai imposti una variabile con del
testo ??? solitamente il testo o i dati arrivano da un form e in questo
caso ci pensa PHP a sistemare tutto.
Se invece vuoi creare una variabile per usarla in un istruzione tipo:
$testo = "n'a prova";
mysql_query("select * from tabella where campo='$testo' ");
- A questo punto fai prima a fare cosě:
mysql_query("select * from tabella where campo='n\'a prova' ");
byez
   Alessio

 mysql_query("select * from tabella where campo='n\'a prova' ");
e su questo non ci piove, solo prova a fare così :
$testo = "n'a \"bella\" prova";
mysql_query("select * from tabella where campo='$testo' ");
e dimmi se tutto ti torna...
Grazie dell'aiuto,
--
RaSca
http://web.tiscalinet.it/rascasoft

 sostituite da \" la cosa non va comuque bene...
Esiste l'apposita funzione addslashes, da usare SEMPRE quando si
inserisce in un database un qualcosa che proviene da form.
Anche perche` qualcuno potrebbe passare la stringa:
 '; delete from table; commit;
e distruggervi una tabella...
A risentirci
\  Davide G. Borin
\\ !!Scudo anti-spam attivo!! Togliere le x e "eliminami" dall'indirizzo
\\\_____________________________________________________________________

 e distruggervi una tabella...
Nulla da obiettare, il fatto però è che in Interbase (e non so se anche in
MySql) se vuoi inserire in un campo VARCHAR un valore tipo L'APOSTROFO E
"VIRGOLETTE" , allora (e finalmente l'ho scoperto !) si dovrà scrivere :
INSERT INTO TABLE CAMPO1 VALUES ('L''APOSTROFO E "VIRGOLETTE"');
praticamente vanno duplicati gli apici singoli e questo è un bel problema,
io l'ho risolto in una maniera grezza, ma molto efficace, creandomi nel mio
oggetto database la seguente funzione, o meglio il seguente metodo :
function str_prepare ($input_str)
{
 if (!$input_str)
  $input_str = "NULL";
 else
  $input_str = str_replace('\\\'','\'\'', $input_str);
  $input_str = stripslashes($input_str);
  $input_str = "'" . $input_str . "'";
 }
return $input_str;
}
Grazie a questo metodo ora riesco tranquillamente a passare alle query dei
valori stringa opportunamente formattati, riesco cioè a registrare nel mio
database valori VARCHAR tipo L'APOSTROFO E "VIRGOLETTE"
Anzi...Come si potrebbe ottimizzare quanto sopra ?
Grazie a tutti,
--
RaSca
http://web.tiscalinet.it/rascasoft