SQL / ASP - Ожидается: «- Но это там? - PullRequest
2 голосов
/ 31 июля 2010

Может кто-нибудь помочь мне разобраться? Это дает мне ошибку за ошибкой за ошибкой, и я понятия не имею, в чем ее проблема.

Мой код:

<%
Dim cnnSimple  ' ADO connection
Dim rstSimple  ' ADO recordset
Set cnnSimple = Server.CreateObject("ADODB.Connection")
' DSNLess
cnnSimple.Open "MY CONNECTIONS STRING INFO HERE"

cnnSimple.Execute("insert into SALT (Email, Username, FirstName, LastName, ActivationCode) VALUES ('" & Request.QueryString("payer_email") & "', '" & Request.QueryString("payer_email") & "', '" & Request.QueryString("first_name") & "', '" & Request.QueryString("last_name") & "', '" & Request.QueryString("hash") & "')")

rstSimple.Close
Set rstSimple = Nothing
cnnSimple.Close
Set cnnSimple = Nothing
%>

И ошибка:

Microsoft VBScript runtime error '800a01a8'
Object required: ''
/thanks.asp, line 65

Спасибо

Строка 65:

cnnSimple.Execute("insert into SALT (Email, Username, FirstName, LastName, ActivationCode) VALUES ('" & Request.QueryString("payer_email") & "', '" & Request.QueryString("payer_email") & "', '" & Request.QueryString("first_name") & "', '" & Request.QueryString("last_name") & "', '" & Request.QueryString("hash") & "')")

Ответы [ 2 ]

3 голосов
/ 31 июля 2010

Ошибка подразумевает использование объекта, который не был создан.Из приведенного фрагмента кода похоже, что вы пытаетесь закрыть набор записей, даже не создавая его экземпляра.

Вы хотите установить rstSimple для результата cnnSimple.Execute ()?

Edit: Теперь, когда я посмотрел другой вопрос, что яПредложил, возможно, не проблема.Как уже указывали люди, вы должны действительно очистить данные в объекте Request, прежде чем вставлять их в вашу строку (безопасность или отсутствие защиты, апостроф в одном из этих переменных уничтожит это утверждение).

Возможно (мои воспоминания о VBScript блаженно туманны), что если инструкция Execute () завершится неудачно, rstSimple не будет назначено ничего, и вызов rstSimple.Close () выдаст сообщение об ошибкевидеть.

Попробуйте установить rstSimple в новый ADODB.Recordset перед вызовом cnnSimple.Execute () и посмотрите, проливает ли это какой-либо свет на проблему ...

2 голосов
/ 31 июля 2010

предложение:

  1. объявить строковую переменную (myVar)
  2. установить строковую переменную = ваша строка 65 SQL

    "вставить в SALT (Электронная почта, имя пользователя, имя, фамилия, код активации) VALUES ('' & Request.QueryString ("payer_email") & "','" & Request.QueryString ("payer_email") & "','" & Request.QueryString (")first_name ") &" ',' "& Request.QueryString (" last_name ") &" ',' "& Request.QueryString (" hash ") &" ') "

  3. response.write (myVar)

Может быть проще взглянуть на это так, чтобы увидеть, есть ли у вас проблемы с кавычками в переменных строки запроса или чем-то еще.Как только вы довольны этим:

cnnSimple.Execute (myVar)
...