error in your SQL syntax

  • Creatore Discussione Creatore Discussione LaKanka
  • Data di inizio Data di inizio

LaKanka

Utente Attivo
29 Ago 2008
166
0
0
Salve a tutti..
Ho un problema con le query solo in una pagina del mio sito...
Per spiegarmi meglio

PHP:
$query= "select * from registrazioni_agenti";

 
 	if (($id_agente !='')&&($provincia!='')&&($comune!=''))
 	$query .= "where (provincia = '$provincia')&&(comune = '$comune')&&(id = '$id_agente')";
 	
  	if (($id_agente !='')&&($provincia!='')&&($comune==''))
 	$query .= "where (provincia = '$provincia')&&(id = '$id_agente')";
 	
	if (($id_agente !='')&&($provincia=='')&&($comune==''))
 	$query .= "where id = {$id_agente}";
 	
	if (($id_agente =='')&&($provincia!='')&&($comune==''))
 	$query .= "where provincia = '$provincia'";
 	
	if (($id_agente =='')&&($provincia!='')&&($comune!=''))
 	$query .= "where (provincia = '$provincia')&&(comune = '$comune')";
 
 if(($visualizza=='date')||($visualizza=='nome'))
	$query .= "ORDER BY $visualizza";

Non mi ha mai dato problemi questa sintassi in altre pagine....
Ora è sempre lo stesso errore sia quando seleziono una provincia:

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 '= 'Ascoli Piceno'' at line 1

Sia quando decido di ordinarle per 'nome':

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 'BY nome' at line 1

Cosa posso fare???
 
La prima cosa che mi salta all'occhio è che manca uno spazio qui:

PHP:
$query= "select * from registrazioni_agenti";

dovrebbe essere:

PHP:
$query= "select * from registrazioni_agenti ";

in quanto se concateni le altre parti ti verrebbe tutto attaccato.
 
ok.. dopo un pò che ci mettevo le mani ho risolto... grazie ragazzi!!:p
 
Anche lo switch non sarebbe una cattiva idea.

Comunque, come giustamente osserva Eliox, stampa la strunga SQL a video e postala sul forum, oppure eseguila su phpMyAdmin che è più preciso del server Web quando rilascia l'errore.
 
è normale che ti da errore visto che la sintassi è la seguente:

SELECT * FROM tabella WHERE valore = valore AND valore = valore AND valore = valore

Quindi è più che normale che se ripeti WHERE su ogni riga ti da errore...

sembra che i casi introdotti dalle If siano tutti differenti (da sguardo sommario) quindi di WHERE ne dovrebbe venire stampata una sola..
 
Ve lo dico io ragazzi qual' era l'errore... non c'era alcuno spazio tra la fine della prima query e il where...

Mi spiego... veniva fuori "select * from registrazioni_agentiwhere (provincia = '$provincia')":fonzie:
 

Discussioni simili