Problema INSERT INTO

saverio_web

Utente Attivo
Ragazzi ho un problema che non riesco assolutamente a risolvere >.<
La pagina contiene questo errore:
" Microsoft JET Database Engine error '80040e14'
Errore di sintassi nell'istruzione INSERT INTO. "

Il codice della pagina asp è il seguente, e l'errore è alla riga 31...

PHP:
<%@Language=VBScript %>
<%Option Explicit %>

<%
Dim conn, rs, rs1, rs2, StrConn, querylog1, querylog2, useresist, mailesist, rsreg, Username, eMail, Password, Nome, Cognome, Collocazione, Scuola, Gruppo, sql
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
Set rs1 = Server.CreateObject("ADODB.Recordset")
Set rs2 = Server.CreateObject("ADODB.Recordset")
StrConn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("apprendinweb.mdb")
conn.Open StrConn
	
Username=Request.Form("username")
eMail=Request.Form("email")
Password=Request.Form("password")
Nome=Request.Form("nome")
Cognome=Request.Form("cognome")
Collocazione=Request.Form("collocazione")
Scuola=Request.Form("scuola")
Gruppo=Request.Form("gruppo")
	
querylog1="SELECT utenti.nomeutente FROM utenti WHERE utenti.nomeutente='"&Username&"';"
Set rs1=conn.Execute(querylog1)

querylog2="SELECT utenti.email FROM utenti WHERE utenti.email='"&eMail&"';"
Set rs2=conn.Execute(querylog2)
	
	
	If rs1.BOF=True And rs1.EOF=True Then
		sql="insert into utenti(nomeutente,password,nome,cognome,email,collocazione,scuola,gruppo) values ('"&Username&"','"&Password&"','"&Nome&"','"&Cognome&"','"&eMail&"','"&Collocazione&"','"&Scuola&"',"&Gruppo&");"
		conn.Execute (sql)
		Response.write ("Record Aggiunto")
	Else
		Response.write("Nome utente già utilizzato")		
	End If

	
rs1.Close: Set rs1=nothing
conn.Close: Set conn=nothing
%>

Vi ringrazio già in anticipo per l'aiuto =)
 
Il problema potrebbe essere il database per caso? Sapete mica se Access 2007 da dei problemi riguardo la scrittura sui database creati con esso? Mette mica una sorta di protezione?

Scusate si mi rispondo da solo ma le cose mi vengono in mente man mano, e ancora non sono riuscito a risolvere il problema =(
 
PROBLEMA RISOLTO.

Praticamente 'password' è una variabile riservata in ASP, almeno credo perché io password l'ho messa tra parentesi [] e il problema si è risolto.

Chiunque riscontri un problema simile faccia attenzione alle variabili riservate, il mio consiglio è questo. =)

A parer mio potete chiudere la Discussione =)
 
Ciao,

per controllare un errore generato da una sequel, prima di eseguirla si mette un response.write.

sql="INSERT INTO..................."
response.write(sql)
conn.Execute (sql)

se non vuoi diversificare un nome utente o una pass già utilizzata, usa un AND o un OR, visto che il messaggio di avviso è solo per il Nome.

Response.write("Nome utente già utilizzato")

Usa un response.end per bloccare l'esecuzione dello script e i controlli prima della insert into chiudi db e il recordset quando si verifica.

Mancano controlli importanti, il tuo codice ammette l'inserimento di tag html come < o > fai il replace, anche dell'apice singolo ' che da errore se uno scrive un dato di un request.form che lo contiene.

Credo che (o almeno spero) che il codice postato sia solo una parte di quello utilizzato visto che hai creato tre oggetti recordset

Set rs = Server.CreateObject("ADODB.Recordset")
Set rs1 = Server.CreateObject("ADODB.Recordset")
Set rs2 = Server.CreateObject("ADODB.Recordset")

e ne usi solo uno rs1

Valeria.
 
Grazie Vale per i consigli =) Comunque la pagina è formata da un centinaio di righe e io ho postato solo quella parte perché l'errore era lì. Gli altri Record Set mi sono serviti per altri controlli sul database =)

Grazie ancora per i consigli, mi sono molto utili, specialmente perché sono alle prime armi con il linguaggio ASP =)
 

Discussioni simili