2011-10-17 3 views
2

Je suis sur le point d'arracher mes cheveux avec celui-ci.(ColdFusion + Access) Erreur de requête de base de données "Trop peu de paramètres".

Error Executing Database Query. 
[Macromedia][SequeLink JDBC Driver][ODBC Socket][Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3. 

The error occurred in [WITHHELD]: line 19 

17 :     WHERE  FNAME = #FORM.first# 
18 :     AND   LNAME = #FORM.last# 
19 :     AND   PASS = #FORM.pass# 
20 :    </cfquery> 
21 :   

SQLSTATE  07002 
SQL  SELECT * FROM JUDGES WHERE FNAME = [WITHHELD] AND LNAME = [WITHHELD] AND PASS = [WITHHELD] 
VENDORERRORCODE  -3010 
DATASOURCE honors 

J'ai lu un certain nombre de questions semblables où il y a eu une erreur d'orthographe mais j'ai vérifié et revérifié orthographes, même les noms de colonnes et de table changé et essayé à nouveau.

+1

avez-vous des guillemets autour des variables dans votre code réel? ie 'fname = '# form.first #'' – Antony

+0

@Antony: Non. Bien que je l'ai essayé avec des guillemets autour de FNAME, LNAME et PASS juste pour voir. Cela n'a toujours pas fonctionné. – Dan

+0

obtenez-vous l'erreur pour toutes les valeurs de 'WITHHELD' - des guillemets ou des caractères amusants dans les valeurs de formulaire? – Antony

Répondre

6

Assurez-vous que vous citez vos variables:

where FNAME = '#FORM.first#'

De plus, vous devriez vraiment utiliser cfqueryparam pour se protéger contre SQL injection attacks:

where FNAME = <cfqueryparam value="#FORM.first#" cfsqltype="CF_SQL_VARCHAR">

(Notez que vous n'avez pas besoin des citations en utilisant cfqueryparam)

Questions connexes