我有如下多个语句代码。
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中没有用。
它说不存在查询中没有的字段。我该如何解决?
[这很可能与OPTION
标志的组合有关,因为它们可以组合。一般共识是具有以下三个标志;
FLAG_FIELD_LENGTH
(1)-“不优化列宽” 1FLAG_FOUND_ROWS
(2)-“返回匹配的行”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))
%>