2011-10-12 5 views
2

En cas d'urgence absolue, j'essaie de parcourir mon site Web et d'ajouter des requêtes paramétrées. Je suis un débutant et viens juste d'apprendre à leur sujet. Mon problème est que je ne connais que très peu de choses sur les types de connexion et tous les exemples que je vois utilisent d'autres méthodes de connexion, ce qui m'embrouille. Je ne veux pas particulièrement changer la façon dont je me connecte à ma base de données, car c'est sur beaucoup de pages, je veux juste mettre à jour mes requêtes pour être plus sûr.MySQL/Classic ASP - Requêtes paramétrées

Voilà comment je suis connecte à mon DB:

Set connContent = Server.CreateObject("ADODB.Connection") 
connContent.ConnectionString = "...blah...blah...blah..." 
connContent.Open 

et c'est le bit SQL avec des paramètres:

username = Trim(Request("username")) 
connContent.Prepared = True 

Const ad_nVarChar = 202 
Const ad_ParamInput = 1 

SQL = " SELECT * FROM users WHERE (username=?) ; " 

Set newParameter = connContent.CreateParameter("@username", ad_nVarChar, adParamInput, 20, username) 
connContent.Parameters.Append newParameter 

Set rs = connContent.Execute(SQL) 

If NOT rs.EOF Then 
     ' Do something... 
End If 

rs.Close 

Il est de toute évidence ne fonctionne pas mais je dois savoir si je peux en fait réaliser ceci en utilisant la connexion que j'ai ou est-ce que je manque quelque chose tout à fait qui l'empêche de fonctionner?

Avant d'aller de l'avant et passer les 2 prochains jours débogage quelque chose que je ne suis pas familier avec, je voudrais savoir que je suis au moins sur la bonne voie ...

Répondre

3

Le code dans votre deuxième extrait est correct, mais devrait être appliqué à un nouvel objet ADODB.Command, pas l'objet Connection:

username = Trim(Request("username")) 

'-----Added this----- 
Dim cmdContent 
Set cmdContent = Server.CreateObject("ADODB.Command") 

' Use this line to associate the Command with your previously opened connection 
Set cmdContent.ActiveConnection = connContent 
'-------------------- 

cmdContent.Prepared = True 

Const ad_nVarChar = 202 
Const ad_ParamInput = 1 

SQL = " SELECT * FROM users WHERE (username=?) ; " 

Set newParameter = cmdContent.CreateParameter("@username", ad_nVarChar, ad_ParamInput, 20, username) 
cmdContent.Parameters.Append newParameter 

cmdContent.CommandText = SQL 
Set rs = cmdContent.Execute 

If NOT rs.EOF Then 
     ' Do something... 
End If 

rs.Close 

soit dit en passant, il y avait une faute de frappe avec l'orthographe de adParamInput au lieu de ad_ParamInput (corrigé dans mon exemple).

+0

C'est très bien merci. J'apprécie vraiment, vraiment. Une question, des idées pourquoi je voudrais obtenir l'erreur "type de données SQL hors de portée"? – TheCarver

+0

Il est préférable de poser cette question comme une nouvelle question. –

+0

Bon, j'ai remarqué que MySQL n'aime pas (ad_nVarChar = 202), donc je l'ai changé en (ad_varChar = 200) et ça a marché. Merci encore.. – TheCarver

Questions connexes