插入到sql语句中 - asp经典 - 没有赋值 -

时间:2016-10-24 17:14:27

标签: sql asp-classic jscript

我正在使用asp经典。 我试图从用户那里获取信息,然后插入我的数据库。

  

错误是“没有给定值”。   在线:myCon.Execute(sql);

我认为它来自我的sql语句。

var myCon, myRec, sql;
myCon = new ActiveXObject ("ADODB.Connection"); 
myCon.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data  Source=C:\\Users\\abc.mdb");

var bodyType = parseInt(Request.Form("cbBodyType"));
var education = parseInt(Request.Form("cbEducation"));
var eyes = parseInt(Request.Form("cbEyes"));
var hairs = parseInt(Request.Form("cbHairs"));
var heights = parseInt(Request.Form("cbHeights"));
var religion = parseInt(Request.Form("cbReligion"));
var memberID = parseInt(Session("MemberID"));

sql = "INSERT INTO Profiles (MemberID, Religion, HairColor, Eye, Education, Height, BodyType) VALUES ("+memberID+", "+religion+", "+hairs+", "+eyes+", "+education+", "+heights+", "+education+")";

myCon.Execute(sql);
myCon.Close();

编辑:问题在于逻辑。我有例如具有ID和描述的表HairColor。 ID是主键,其外键位于表Profile中。 当我的用户输入信息时,我想恢复组合框值,获取ID,然后执行INSERT INTO PROFILES。

有没有一种简单的方法可以做到而不是使用很多“where statement”?

2 个答案:

答案 0 :(得分:0)

我的猜测是发生以下情况之一:

  1. 您尝试填充的其中一列可能是字符串值列。在这种情况下,您需要用单引号括住您的value参数,如下面的简化示例:

    sql = "INSERT INTO Profiles (MemberID, Religion) VALUES (" _         
           + memberID + ",'" + religion + "');"
    
  2. 或者,如果您的某个组合框中有- All -Please Select选项作为top和default选项,并且您没有为该选项指定值,那么可能会返回一个空白/空字符串作为值。这将导致这一结果(简化为了简化)SQL:

     Sql = "INSERT INTO Profiles (MemberID, Religion) VALUES( 235, );"
    

    请注意第二列没有值。我本来希望你得到一个语法错误信息,但是,如果那是发生了什么。

  3. 请注意,通过这种方式执行SQL,从发布的值组装字符串而不是使用SQL参数,您将为SQL注入攻击打开大门。这不是一个好主意。< / p>

答案 1 :(得分:0)

尝试使用以下代码变体

myCon.Execute sql, 0

(不带括号)