【问题标题】:insert into sql statement - asp classic - no value given -插入到 sql 语句中 - asp classic - 没有给出值 -
【发布时间】:2016-10-24 17:14:26
【问题描述】:

我正在使用 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 语句”?

【问题讨论】:

  • 完成了任何基本的调试,比如吐出您生成的sql 字符串以查看它的样子?如果您尝试插入 bodytype,为什么要为该字段提供 education 值?
  • 我做了调试。我拆分它并得到完全相同的错误。 “没有给出值”
  • 我认为它来自我的双引号
  • 在哪一行?至少您应该能够指出发生异常的确切行。我的猜测是它在 parse 语句中,其中 Request.Form 或 Session 返回 null 或空。
  • 我用这条线进行了编辑。我仔细检查了会话,它返回了一个值

标签: sql asp-classic jscript


【解决方案1】:

尝试使用以下代码变体

myCon.Execute sql, 0

(不带括号)

【讨论】:

    【解决方案2】:

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

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

      sql = "INSERT INTO Profiles (MemberID, Religion) VALUES (" _         
             + memberID + ",'" + religion + "');"
      
    2. 或者,如果您在其中一个组合框中将 - All -Please Select 选项作为顶部和默认选项,并且您没有为该选项指定值,则可能会返回空白/空字符串作为值。这将导致结果(为清晰起见)SQL:

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

      请注意第二列没有值。不过,如果发生这种情况,我本来希望您收到一条语法错误消息。

    请注意,以这种方式执行 SQL,从发布的值而不是使用 SQL 参数组装字符串,您正在为 SQL 注入攻击打开大门。这不是一个好主意。

    【讨论】:

    • 我的表有一个 ID 和一个描述。在我的表单中,我得到了 Description 值。但我想我刚刚意识到问题出在哪里:在我的 INSERT INTO 语句中,我需要获取所选描述的 ID。这有意义吗?有没有简单的方法?
    • 您是如何创建 HTML SELECT 标记的?可以将描述和值指定为单独的事物。这是一个链接:w3schools.com/tags/tag_select.asp。您需要为option 标记的value 属性指定您的ID。
    • 谢谢你,我现在会调查它。
    • 您需要设置您的option 标签,以便呈现的内容类似于以下示例:<option value="236">Brown</option>。请注意option 标记有一个属性value。这样描述就会显示出来,但是当用户回帖时返回的是他们选择的optionvalue 属性的值。
    • 那么我怎样才能从我的 sql 语句中获取所有内容呢?值(这是我的列 ID)和描述?我找到了下面的方法,但我的问题是我什么时候想要插入到我的 sql 语句中。我如何只得到身份证?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多