- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个用 PHP 编写并使用 SQL Server 2008 的 Web 应用程序。为了连接到数据库,我使用了 Microsoft 的 SQLSRV 驱动程序。在此应用程序的一部分中,我必须使用 SQL 事务。正如微软建议的那样,我完全是根据这篇文章做的。我的代码中的主要流程遵循以下步骤:
1- 启动 sql 事务
2-通过jQuery向PHP文件发送信息并查看JSON发送的结果
3- 如果结果为假则回滚,如果为真则转到下一个查询。
4- 如果没有错误发生并且所有结果都正常,则提交事务。
// This is my pseudo code
if (sqlsrv_begin_transaction( $sqlsrv->sqlsrvLink ) === true) {
$firstQuery = sqlsrv_query($stmt1);
if (!$firstQuery) {
sqlsrv_rollback();
} else {
$nextQuery = sqlsrv_query($stmt2);
if (!$nextQuery) {
sqlsrv_rollback();
} else {
sqlsrv_commit();
}
}
} else {
print_r(sqlsrv_errors()); // Here is where I get the error below.
}
我遇到的问题是这个错误:
[Microsoft][SQL Server Native Client 10.0][SQL Server] New transaction is not allowed because there are other threads running in the session
我正在使用 SQLSRV 驱动程序版本 2。
这是什么错误?我该如何解决?
我将我自己的 sqlsrv 类包含在包含以下方法的 index.php 的第一部分:
function __construct($dbServerName,$dbUsername,$dbPassword,$dbName)
{
$connectionInfo = array("Database"=> $dbName, "CharacterSet" => "UTF-8");
$this->sqlsrvLink = sqlsrv_connect($dbServerName, $connectionInfo);
if ($this->sqlsrvLink === false) {
$this->sqlsrvError = sqlsrv_errors();
}
}
function __destruct()
{
sqlsrv_close($this->sqlsrvLink);
}
最佳答案
我认为当你想连接到 sql server 时,你应该将 MultipleActiveResultSets
设置为 true
:
$conn = sqlsrv_connect('127.0.0.1', array
(
'Database' => 'Adventureworks',
'MultipleActiveResultSets' => true, // MARS ENABLED
));
关于php - 什么是 PHP 和 SQLSRV 驱动程序中的 "New transaction is not allowed"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9494587/
这个问题已经有答案了: How can I use PDO to fetch a results array in PHP? (2 个回答) 已关闭 4 年前。 由于我的罪孽,我必须迁移(或者简单地说
我正在将 L5.1.x 中的现有项目迁移到运行 Server 2012 和 SQL Server 2012 的新服务器。 对表使用 timestamps() 字段时遇到一些问题。生病时添加我的计划:
我在 PHP (5.5.12) 中使用 sqlsrv(php_pdo_sqlsrv_55_ts.dll 和 php_sqlsrv_55_ts.dll)通过 VPN 隧道连接到 MSSQL 2012 服
以前我用的是MySQL。这样我就可以使用下面的查询从数据库中获取最大数量。 这里 'No' 是 varchar(10): SELECT max(cast(No as unsigned)) as No
我似乎无法弄清楚为什么 sqlsrv_fetch_assoc 根据 sqlsrv_num_rows 结果集中有 2 行时只返回 1 行。我已尝试对参数进行硬编码,但我仍然得到相同的结果。 SSMS 结
我有一个存储过程,它创建一个临时表 (#test),用另一个表中的数据填充它,在这个临时表上运行 3 次选择并删除它。 原始表超过 20 GB,3 个 SELECT 语句包含原始 SP 上的许多不同条
我们必须升级系统以使用 PHP7.3(从 MSSQL 更改为 SQLSRV DB Driver 和带有 PDO 的 SQLSRV) 我的问题是,我不理解这种行为以及如何正确解决它。 当我从数据库查询
正在将我的 mysql php 代码转换为 sqlsrv,但在查找相同函数时遇到问题。 这是代码: $result=sqlsrv_query($conn,$sql) or die("Couldn
我正在尝试将 MSSQL 连接到 PHP。我正在关注 this教程。无论如何,在我按照该教程中的描述添加 dll 文件后,我收到以下警告。我该如何解决这个问题? php starup sqlsrv u
我正在使用 SQL server2008 作为数据库,并且我在 MSSQL Server 2008 中编写了存储过程。它在 MSSQL Server 2008 中运行良好。我想从 codeignite
我可以用MySQL $pdo->setAttribute(PDO::ATTR_TIMEOUT, 5); 设置连接超时值。但是当我使用 sqlsrv 驱动程序时,它的工作方式有所不同。您能解释一下如何使
如何从具有正确字段类型的数据库中获取值? 我正在使用 PDO Sqlsrv 从 DB 中获取数据,并且我总是以字符串形式接收数据,例如:customer_id : "1" 我的 customer_id
我现在开始使用 PHP 7 和 mssql,我需要将 sql 函数从 mssql_ 切换到 sqlsrv_。当我使用 mssql 函数时,我正在使用函数 mssql_change_db 更改数据库,但
本文实例讲述了PHP连接MSSQL2008/2005数据库(SQLSRV)配置方法,分享给大家供大家参考。具体方法如下: PHP连接MSSQL2008/2005数据库与以往的连接mssql2000
我的公司使用 sqlserv 扩展连接到 MSSQL 数据库。之所以选择此扩展而不是 mssql 扩展,是因为 Microsoft 正在积极维护它,并且根本不再维护 mssql 驱动程序。我的同事一直
我搜索了一整天,寻找 php 7 VC14 x64 Thread Safe 上 sqlsrv dll 的解决方案,但没有找到解决方案。有没有人解决这个问题: [04-Oct-2015 19:48:05
我目前正在尝试将使用 mysql 的 php 登录名(我知道这有点过时)转换为使用 sqlsrv。这只是一项学习任务,因为我想学习将站点从 mySQL 迁移到 MSSQL。 "dbname", "UI
我使用 PDO 和 MySQL 数据库在本地系统上设置了一个站点。我使用 PDO 是因为当站点运行在实时服务器上时,我必须使用 SQL Server,并且我希望 PDO 能够解决我所有的查询冲突。 现
我正在尝试转换它: http://www.datatables.net/examples/server_side/server_side.html 使用 SQLSRV,这是我到目前为止的代码: in
正在将我的代码从 mysql 转换为 sqlsrv。想知道 mysql_field_type 的等价物是什么,希望有人知道我可以在其中看到更多 mysql 和 sql 等价函数的页面。无法找到这两个:
我是一名优秀的程序员,十分优秀!