VBScript注册[ASP] MSSQL]

时间:2017-08-28 14:01:14

标签: sql-server vbscript

问题出在哪里?

  

错误:" Microsoft OLE DB Provider for ODBC Drivers错误' 80040e14'

     

[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]附近的语法不正确   ''

     

/checkregistrazione.asp,第27行"

代码是:

<%@LANGUAGE = VBScript%>
<%
Dim str_cn
str_cn = ""
str_cn = str_cn & "driver={SQL Server};Server=62.149.153.49;Database=MSSql151186;uid=MSSql151186;pwd=y5ii1s154j;"
Dim rs ' Variabile per il Recordset
' Creo un'istanza per la connessione ed una per il Recordset
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
cn.Open str_cn ' Apro la connessione al database

Dim nomeutente
nomeutente = Request.Form("nomeutente")
Dim password
password = Request.Form("password")
Dim email
email = Request.Form("email")
Dim nomeimpresa 
nomeimpresa = Request.Form("nomeimpresa")
Dim cellulare 
cellulare = Request.Form("cellulare")

Dim SQL ' Creo la query SQL
SQL = "INSERT INTO [dbo].[utenti] ([ID_utente], [nome_utente], [password], [email], [nome_impresa], [cellulare]) VALUES ("& 2 &","& nomeutente &","& password &","& email &","& nomeimpresa &","& cellulare &");"

' Apro il Recordset
rs.Open SQL, cn
%>
<html>
<head>
<title>Lettura dei dati da un database</title>
</head>
<body>
<%
' Verifico che la tabella contenga dati
' Se non ne contiene lancio un messaggio di avviso
If rs.EOF = True Then
%>
<p>Errore</p>
<%
' Se invece ne contiene visualizzo i dati in funzione
' della query SQL specificata
Else
While rs.EOF = False
%>
    <p>
     <h1>Dati inseriti correttamente nel database</h2>
    </p>
<%
rs.MoveNext
Wend
End If
%>
</body>
</html>
<%
' Chiudo il Recordset
rs.Close
Set rs = Nothing
' Chiudo la connessione
cn.Close
Set cn = Nothing
%>

请帮帮我!该数据库是MSSQL Server

1 个答案:

答案 0 :(得分:0)

您的查询中存在语法错误。因为您的查询中有变量,所以变量中可能存在一些搞乱查询的内容。当我查看您的查询时,最可能的解释是您的文本字段需要引用,如下所示:

SQL = "INSERT INTO [dbo].[utenti] ([ID_utente], [nome_utente], [password], [email], [nome_impresa], [cellulare]) VALUES ("& 2 &",'"& nomeutente &"','"& password &"','"& email &"','"& nomeimpresa &"','"& cellulare &"');"

如果这不能解决问题,请在第24行之后添加以下行:

response.write(SQL)
response.end

这将显示查询,希望您会看到错误。

请注意:

这种混合变量和代码的方式是一个非常大的安全问题,称为SQL注入。您可以阅读有关SQL注入here的更多信息。 (看看例子)

为了防止在经典ASP中注入SQL,有不同的方法。我建议你试试谷歌找一些。 Here就是一个例子。