【问题标题】:Classic ASP Multiple Statments Last ID Doesnt Work经典 ASP 多语句 Last ID 不起作用
【发布时间】:2020-07-25 04:19:17
【问题描述】:

我有多个语句代码,如下所示。

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 中它不起作用。

它说不从查询中退出任何字段。我该如何解决?

【问题讨论】:

  • this comment 对现有问题有帮助吗?
  • 尝试将OPTION 标志调整为67108867,这是FIELD_LENGTH:“不优化列宽”、FOUND_ROWS:“返回匹配行”和MULTI_STATEMENTS 的组合: "支持批量多条sql语句"。
  • this 有用吗?

标签: mysql vbscript asp-classic adodb


【解决方案1】:

这很可能与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. FLAG_FIELD_LENGTH has been depreciated 自 3.51.18 版起来自 ODBC 连接器 GUI

另一种解决方案

似乎是OPTION 参数中缺少FLAG_FOUND_ROWS 导致了这个特殊问题,但作为一个快速测试,您可以查看是否可以通过序数字段访问查询结果而不使用别名,一些像这样;

<%
'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))
%>

有用的链接

【讨论】:

    猜你喜欢
    • 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
    相关资源
    最近更新 更多