有关此错误的谷歌并没有太多,所以我在这里问。我正在使用MySQL切换PHP Web应用程序到SQL Server 2008(使用ODBC,而不是php_mssql)。运行查询或其他任何东西都不是问题,但是当我尝试执行scope_identity(或任何类似的函数)时,出现错误“直接执行SQL;无游标”。我在插入后立即执行此操作,因此它仍应在范围内。运行相同的插入语句,然后查询插入ID在SQL Server Management Studio中正常工作。这里是我的代码现在(一切都在数据库包装类其他工作正常的其他查询,所以我会认为它现在是不相关的):使用SCOPE_IDENTITY/IDENT_CURRENT时出现“直接执行SQL;无游标”错误
function insert_id(){
return $this->query_first("SELECT SCOPE_IDENTITY() as insert_id");
}
query_first是它返回的第一个结果的函数查询的第一个字段(基本上相当于.net上的execute_scalar())。
完整错误信息: 警告:odbc_exec()[function.odbc-exec]:SQL错误:[Microsoft] [SQL Server Native Client 10.0] [SQL Server]直接执行SQL; C中没有游标,SQL状态01000在SQLExecDirect的。[...] \ Database_MSSQL.php上线110
连接在脚本的开始处进行并且从不关闭。 (对不起,我不知道如何正确格式化这个网站) $ connStr =“Driver = {SQL Server Native Client 10.0}; Server = {$ this-> server}; Database = {$ this->数据库};”; $ this-> link_id = odbc_connect($ connStr,$ this-> user,$ this-> pass);每个查询: odbc_exec($ this-> link_id,$ sql); – Chris 2010-04-29 18:09:19