2016-11-25 2 views
0

J'ai essayé de déplacer toutes les requêtes pour utiliser des instructions préparées. J'ai été en mesure d'obtenir les commandes INSERT et UPDATE pour bien fonctionner, mais pour une raison quelconque, les instructions SELECT ne fonctionnent pas. En utilisant une requête standard, je suis en mesure d'obtenir une ligne en utilisant ce qui suit. Lorsque je convertis ceci en une instruction préparée, il semble retourner un résultat, mais rien n'est là. La requête ne renvoie aucune donnée, mais pour une raison quelconque, l'instruction If suivante passe comme s'il y avait des données. La première requête affichera le nom d'utilisateur lorsque cette ligne s'exécutera. Lorsque l'instruction préparée s'exécute, elle ne renvoie rien, mais l'instruction if passe comme si elle était vraie. Il ne semble pas jeter d'erreurs.Instruction ASP classique préparée SELECT ne fonctionne pas

if not (rs.eof and rs.bof) Then Response.Write(rs("username")) 
+0

Avez-vous une 'On Error Resume Next' quelque part dans le code? – Lankymart

+3

'Set rs = cmd.Execute()'? –

+0

Bonne capture @TimWilliams, raté ça. – Lankymart

Répondre

0

Le commentaire de @TimWilliams était l'un des problèmes, il y avait aussi un deuxième problème. ID était un champ entier et l'instruction préparée l'envoyait en tant que varchar. semble fou qu'il existe des types de données, mais le suivant combiné avec le commentaire de Tim a résolu le problème.

cmd.Parameters.Append(cmd.CreateParameter("@id", adVarChar, adParamInput, 255, request.querystring("id"))) 

Changements à

cmd.Parameters.Append(cmd.CreateParameter("@id", 3, 1, , request.querystring("id")))