经典ASP多语句最后一个ID不起作用

问题描述 投票:0回答:1

我有如下多个语句代码。

Set db = Server.createObject("Adodb.Connection")
db.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};option=67108864; SERVER=" & mysql_server & "; UID=" & mysql_user & "; pwd=" & mysql_pass & "; db=" & mysql_db & ";"
set rss=db.execute("INSERT INTO boardlar (baslik, hesap_id) VALUES ('Deneme','1');select LAST_INSERT_ID() as lastid from boardlar")

response.write rss("lastid")

我在phpmyadmin上进行了检查,它可以正常工作。但是在ASP或PHP中没有用。

它说不存在查询中没有的字段。我该如何解决?

mysql vbscript asp-classic adodb
1个回答
0
投票

[这很可能与OPTION标志的组合有关,因为它们可以组合。一般共识是具有以下三个标志;

  1. FLAG_FIELD_LENGTH(1)-“不优化列宽” 1
  2. FLAG_FOUND_ROWS(2)-“返回匹配的行”
  3. FLAG_MULT_STATEMENTS(67108864)-“批量支持多个SQL语句”

当这些值组合时,OPTION参数值变为67108867

这意味着一个简单的更改;

db.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};option=67108867; SERVER=" & mysql_server & "; UID=" & mysql_user & "; pwd=" & mysql_pass & "; db=" & mysql_db & ";"

1。自版本3.51.18起,来自ODBC连接器GUI的FLAG_FIELD_LENGTH has been depreciated

另一个解决方案

似乎确实是FLAG_FOUND_ROWS参数中缺少OPTION导致了此特定问题,但是作为快速测试,您可以看到是否可以通过序数字段访问查询结果而无需使用别名,例如这个;

<%
'Assumed declarations, not setting server, user and pass as you will have these defined.
Dim db, res, mysql_server, mysql_user, mysql_pass

Set db = Server.CreateObject("Adodb.Connection")
db.Open "DRIVER={MySQL ODBC 5.3 Unicode Driver};option=67108864; SERVER=" & mysql_server & "; UID=" & mysql_user & "; pwd=" & mysql_pass & "; db=" & mysql_db & ";"
Set rss=db.execute("INSERT INTO boardlar (baslik, hesap_id) VALUES ('Deneme','1');select LAST_INSERT_ID() as lastid from boardlar")

'Use ordinal positioning instead of field alias to return the value.
Call Response.Write(rss(0))
%>

有用的链接

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.