PDA

View Full Version : [PHP-MySQL] Rendere NON CASE SENSITIVE una ricerca nel DB è possibile?!


Matrixbob
05-08-2005, 18:51
Faccio uso della keyword LIKE di MySQL.
Praticamente questo mio POST è collegato a quello di qualche giorno fa e che
riporto qui sotto, solo che la ricerca ho scoperto che deve essere non sensibile ai caratteri piccoli o grandi.
Se avete ancora voglia di aiutarmi, grazie. :P

[PHP-MySQL] Cercare sottostringhe nel DB, come fan le Pagine Gialle (http://www.hwupgrade.it/forum/showthread.php?t=985421)

Matrixbob
05-08-2005, 19:06
O porc!!
:muro:

Inolte ho scoperto che se faccio ricerca di frasi che usano l'apostrofo
tipo:
"Castel d'Annone" mi compare questo msg:


Tipo d'errore:
You have an error in your SQL syntax. Check the manual that corresponds to
your MySQL server version for the right syntax to use near 'annone' AND
tipo='Abbigliamento Accessori'' at line 1

Numero che identifica l'errore:
1064


:mc:

mslvm
05-08-2005, 19:08
devi mettere "\" davanti :) senò mysql riconoscerà come la fine dell'istruzione, è logico, è una query :)

Matrixbob
05-08-2005, 19:21
devi mettere "\" davanti :) senò mysql riconoscerà come la fine dell'istruzione, è logico, è una query :)
Si ma quel Castel d'Annone è 1 input da form per effettuare una ricerca.
Come posso fargli l'escape?!

Oggi è Castel d'Annone, domani è Asti e dopo domani potrebbe essere Torino. :)

Praticamente è il campo CITTA' :)

mslvm
05-08-2005, 20:14
Si ma quel Castel d'Annone è 1 input da form per effettuare una ricerca.
Come posso fargli l'escape?!

Oggi è Castel d'Annone, domani è Asti e dopo domani potrebbe essere Torino. :)

Praticamente è il campo CITTA' :)
non so come funziona in php ma bisogna fare il replace :) Ci sarà qualche funzione :)

Matrixbob
05-08-2005, 21:01
non so come funziona in php ma bisogna fare il replace :) Ci sarà qualche funzione :)
Su un newsgroup mi hanno risposto così:

>> Inolte ho scoperto che se faccio ricerca di frasi che usano l'apostrofo
> usa str_replace per sostituire l'apostrofo con un doppio apostrofo('')

anonimizzato
06-08-2005, 10:50
Si ma quel Castel d'Annone è 1 input da form per effettuare una ricerca.
Come posso fargli l'escape?!

Oggi è Castel d'Annone, domani è Asti e dopo domani potrebbe essere Torino. :)

Praticamente è il campo CITTA' :)

ci sono le funzioni apposite addslashes() e stripslashes() per l'escaping dei caratteri. ;)

Matrixbob
06-08-2005, 13:37
ci sono le funzioni apposite addslashes() e stripslashes() per l'escaping dei caratteri. ;)
Sul NG "it.comp.www.php" mi hanno dato quelste utilissime risposte:

usa http://php.net/mysql_real_escape_string, http://php.net/strtolower,
http://dev.mysql.com/doc/mysql/en/string-functions.html (LOWER()) ..

non testato..
$search = mysql_real_escape_string(strtolower($search));
mysql_query("SELECT * FROM table WHERE LOWER('field') LIKE '%$search%'");

--
www.iuz-lab.info


Per completezza ed onore a loro non posso far altro che riportarle! :)
Grazie ancora.

mslvm
06-08-2005, 13:51
era più semplice di quanto pensassi :D