Query che non funziona

Ho una tabella in un db MySql che si chiama 'menu_pers'. All'interno di questa tabella c' un record che nel campo 'voce_menu' contiene il valore '\" aaaa' (controllato con phpMyAdmin).

Faccio questa query:

SELECT * FROM `menu_pers` WHERE voce_menu = '\" aaaa'

e non mi torna niente..... non capisco come mai!

Qualcuno s aiutarmi ?

Grazie, ciao.

inviato 7 anni fa
dacdam
X 0 X

se la stringa esatta da cercare : \" aaaa con la tua query cerca questa stringa: " aaaa perch '\' fa da escape alle virgolette, prova a fare l'escape di '\' e quindi fare la query in questo modo:

SELECT * FROM `menu_pers` WHERE voce_menu = '\\" aaaa'

Fammi sapere! Ciao!

risposto 7 anni fa
Hroud
modificato 7 anni fa
X 0 X

Scusa la stringa giusta dovrebbe essere '\\\" aaaa' poich bisogna fare l'escape anche delle virgolette.

risposto 7 anni fa
Hroud
X 0 X

Grazie Hroud, come dici tu funziona...

Per avrei ancora qualche dubbio:

1 - Siccome il parametro della query in realt una variabile del programma, devo usare addslashes ? Se s, mi devo preoccupare di verificare se il magic_quotes di PHP attivo ?

2 - Ammetto di essere alle prime armi con l'escape degli input dell'utente. Ogni volta che tratto la variabile in questione (si tratta di un indirizzo che l'utente pu inserire) divento matto perch non ho ancora trovato un metodo per gestirne bene l'escape... mi dici se queste mie idee sono giuste?

- La inserisco nel database->faccio l'addslashes.

- La prendo dal database->faccio lo stripslashes.

- La uso come attribuo href di un link-> faccio l'urlencode.

Non avresti qualche documento in rete da consigliarmi per imparare questo tipo di gestioni ? Mi trovo veramente incasinato....

Ciao e grazie!

risposto 7 anni fa
dacdam
X 0 X

Abbiamo scritto in contemporanea.... la versione che mi funziona la prima che mi hai dato.

:bye:

risposto 7 anni fa
dacdam
X 0 X

Io personalmente preferisco tenere i magic_quotes disattivati per evitare di fare casini con doppi escape quando faccio dei test e altre cose. Per se si tengono i magic_quotes disattivati bisogna ricordarsi di fare l'escape (oppure bloccare dati pericolosi) ogni volta che vi si introducono dati dall'esterno.

Riguardo alla seconda domanda non te so dire, sinceramente non ho mai provato, io di solito filtro sempre i dati in un altro modo. Comunque so che esiste la funzione mysql_real_escape_string proprio per le query.

Ah, poi quando lo inserisci in un link non c' bisogno di fare l'urlencode, il browser fa tutto da solo.

Ciao!

risposto 7 anni fa
Hroud
X 0 X

Scusa, posso chiederti come filtri i dati ? Magari potrei fare la stessa cosa anche io...

risposto 7 anni fa
dacdam
X 0 X

Se ho dei campi in cui mi serve solo un numero intero faccio il cast ad int, esempio: $var = (int)$_GET["id"];

Se mi serve una stringa uso htmlspecialchars oppure htmlentities (come il precedente ma vale per tutti i caratteri html).

Ciao! :bye:

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