我在更新语句的代码中遇到语法错误,在阅读了有关它的多篇帖子后,我无法弄清楚导致错误的原因。
代码如下:
if request.querystring("do")="customer" then
New_customer = request.Form("customer")
openconn con
sSQL="SELECT RelationNumber FROM Relations WHERE RelationName='" & New_customer & "'"
set rst = con.execute(sSQL)
if rst.EOF then
response.write "No relation found"
else
Relationnumber_update = rst("RelationNumber")
sSQL2="SELECT Number FROM Orders WHERE Relation=" & Relationnumber_update & ""
set rst2 = con.execute(sSQL2)
if rst2.EOF then
response.write("No order number found!")
else
if Relationnumber_update <> 1000 then
Ordernumber_update = rst2("Nummer")
sSQL3="UPDATE Bookings SET Order=" & Ordernumber_update & " WHERE ID=" & request("ID")
con.execute(sSQL3)
else
response.write("Order number 1000 is not allowed!")
end if
end if
end if
closeconn con
response.redirect("myPage.asp?action=page")
response.end
end if
错误发生在该行:sSQL3="UPDATE Bookings SET Order=" & Ordernumber_update & " WHERE ID=" & request("ID")
要了解的事项:
<form name="ChangeCustomer" method="post" action="myPage.asp?action=page&do=customer&ID=<%=rst("ID")%>" style="display:inline">
上述代码中发生的事情的简短描述
New_customer
。Relationnumber_update
ordernumber_update
对于某些原因,我在更新语句中遇到语法错误,但我不知道为什么。我检查了orders表中Number字段的数据类型,Relations表中的Relationnumber和bookings表中的Order字段,它们都是number / int类型。
我还尝试直接在update语句中使用set number更新而不是ordernumber_update var(如此:sSQL3="UPDATE Bookings SET Order=6477 WHERE ID=" & request("ID")
),但这会产生相同的错误..
答案 0 :(得分:1)
三件事:
要调试sql语句&#34; live&#34;,请使用
sSQL3="UPDATE Bookings ...
Response.Write(sSQL3)
'con.execute(sSQL3) -- comment it out
运行页面,并测试结果对数据库的SQL查询
如果ID具有字符串数据类型(char,varchar等),则应使用&#39; ...&#39;
P.S。
使用[Order]处理保留字。
答案 1 :(得分:0)
请注意数据库管理系统的保留字。
在这里您使用的是Order
,这是一个保留的。
如果您使用 MySQL :
,请使用此选项sSQL3="UPDATE Bookings SET `Order`=" & Ordernumber_update & " WHERE ID=" & request("ID") &";"
或者 SQL Server :
sSQL3="UPDATE Bookings SET [Order]=" & Ordernumber_update & " WHERE ID=" & request("ID") &";"
希望这也有助于其他人。谢谢。
答案 2 :(得分:-1)
在[订单]周围使用括号,而不是单引号。并且不要将保留字用于您的字段名称。 Jus sayin#39;。