variabile in un query

Ciao a tutti,

ho bisogno di creare una query che nella condizione WHERE abbia una variabile, fin qui non ci sono problemi

il problema č che puō capitare che il valore della variabile contenga l'apice, a quel punto mi va in errore,

come posso fare per risolvere il problema??

grazie mille

inviato 10 anni fa
mauro1980
X 0 X

Basta usare la funzione addslashes:

$variabile_protetta = addslashes($variabile)

e poi usare $variabile_protetta all'interno della query.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

mi dispiace Gianni, ma non funziona..

ti scrivo il codice

$naz_cont_pro = addslashes($naz_cont);
$sql6="SELECT sum(MC_QtāKg), sum(MC_ImpoRiga_Eff), sum(MC_DeltaSuIcisMin_Eff), sum(MP_QtāKg), sum(MP_ImpoRiga_Eff), sum(MP_DeltaSuIcisMin_Eff)
            FROM Qy_06_0_2_1
            group by Business, DescNazi, Filtro
            having ((Business = '$busin_cont') and (DescNazi= '$naz_cont_pro') and (Filtro = 1))";
risposto 10 anni fa
mauro1980
X 0 X

che errore ricevi?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query '((Business = 'ESTENSIBILE') and (DescNazi = 'COSTA D\'AVORIO ') and (Filtro = 1))'., SQL state 37000 in SQLExecDirect in C:\Programmi\Apache Group\Apache2\htdocs\report\Utenti\BM\rep_mese.php on line 219

query totale parziale uscita fallita 3

risposto 10 anni fa
mauro1980
X 0 X
Errore di sintassi (operatore mancante)

Quindi non č un problema di apici. L'errore si riferisce ad un operatore mancante ma non so dirti a quale operatore si riferisce  :dunno:

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

con operatore cosa s'intende?

ma mi succede solo con "COSTA D'AVORIO" con altre nazioni funziona correttamente..

risposto 10 anni fa
mauro1980
X 0 X

Che DB stai usando?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

vado a puntare ad un DB Access tramite gli ODBC

risposto 10 anni fa
mauro1980
X 0 X

Allora l'escape va fatto in un altro modo. Al posto di:

$naz_cont_pro = addslashes($naz_cont);

metti:

$naz_cont_pro = str_replace("'", "''",$naz_cont);

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grandioso!! funziona!

 O0

 :bye:

risposto 10 anni fa
mauro1980
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda