Buongiorno a tutti,
ho un parametro di ricerca, passato via GET, che può essere un numero (quindi un ID del database) od un testo.
La query SQL è abbastanza semplice:
Se lascio cosi, passando il valore "lazio" trovo correttamente i valori, idem per altri valori di testo.codice:$ricerca = $mysqli->real_escape_string(strip_magic($_GET['ricerca'])); $sql = "SELECT * FROM ("; $sql .= "SELECT id_ristorante, nome_ristorante, regioni.regione AS regione_testo, province.provincia AS provincia_testo, comuni.comune AS comune_testo, latitudine, longitudine FROM ristoranti INNER JOIN regioni ON ristoranti.regione = regioni.id INNER JOIN province ON ristoranti.provincia = province.id INNER JOIN comuni ON ristoranti.comune = comuni.id"; $sql .= ") AS tabella_derivata WHERE "; $sql .= "regione_testo LIKE '%".$ricerca."%' OR "; $sql .= "provincia_testo LIKE '%".$ricerca."%' OR "; $sql .= "comune_testo LIKE '%".$ricerca."%' OR "; $sql .= "nome_ristorante LIKE '%".$ricerca."%' OR "; $sql .= "id_ristorante LIKE '%".$ricerca."%'";
Se passo "2" ovviamente mi trova 2, 20, 21, 200, etc etc.
Se inserisco l'ultimo "WHERE" in questa maniera
OPPUREcodice:$sql .= "id_ristorante = $ricerca";
Ottengo che passando il valore "2" ottengo solamente il record con ID 2 (perfetto), ma passando un testo (ad esempio "lazio") ottengo come rispostacodice:$sql .= "id_ristorante LIKE $ricerca";
Ora potrei risolvere splittando la sql, facendo un controllo "se ricerca è numerico" allora fai sql solo su ID, ma mi piacerebbe capire dove erro...codice:Unknown column 'lazio' in 'where clause'
Grazie in anticipo!

Rispondi quotando

