- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
好的,所以我们有了一个新的服务器
此 PHP 应用程序需要与旧的 SQL Server 2000 服务器通信。我们使用了以前服务器的旧代码(PHP 5.2 和更早的 FreeTDS - 无法获取版本)。我们使用 dblib 驱动程序通过 PDO 连接到 SQL Server 2000。
我们在使用 fetch 函数时遇到了奇怪的行为。基本上,如果我们在同一个 pdo 连接对象的获取循环期间发出查询,主查询将被重置,下一个获取调用将返回 false,即使仍有记录要获取也是如此。
// PSEUDO CODE
// Here the main query
$q = $sql7->query("SELECT TOP 5 * FROM News ORDER BY Data Desc");
while ($row = $q->fetch(PDO::FETCH_ASSOC)) {
// Looping through the results
echo "<h1>Main query</h1>";
print_r($row);
// Issue a query on the same pdo connection
$subq = $sql7->query("SELECT TOP 1 * FROM News WHERE IDNews = " . $row['IDNews'] . " ");
while ($subResult = $subq->fetch(PDO::FETCH_ASSOC)) {
echo "<h1>Inner query</h1>";
print_r($subResult);
}
// Here the main query $q->fetch(PDO::FETCH_ASSOC) will answer false on the next iteration
// if we remove the subq, the main query loops just fine
echo "<hr>";
}
相同的代码在带有 pdo_sqlserver 驱动程序的 Windows PHP 上工作得很好。
我们作为 fetch 函数的参数传递的 fetch 类型并不重要。
PHP 不会抛出任何警告或错误。
我真的不知道这里发生了什么。
最佳答案
This is the behavior of MSSQL (TDS), DBLIB and FreeTDS. One statement per connection rule. If you initiate another statement, the previous statement is cancelled.
The previous versions buffered the entire result set in memory leading to OOM errors on large results sets.
因此,似乎是 PHP 的早期版本(5.3 及更早版本)不符合 TDS 行为。我们需要重构代码。
关于php - 如果在获取循环内发出另一个查询,则 PDO dblib over freetds 会重置 sql server 2000 上的查询获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26883911/
我试图弄清楚这两个拼图在连接到 Linux 上的 MS-SQL 服务器时如何交互和组合在一起。 据我了解,FreeTDS 是用于与 MS-SQL 对话的协议(protocol)(即一组规则),它是真正
我正在尝试创建我的第一个图像,这是我从其他人那里 fork 出来的,但我遇到了构建失败的问题。看起来错误就在这里 [91mconfigure: error: Cannot find FreeTDS i
我实际上正在尝试通过依赖于 FreeTDS 的模块 pymssql 从 Python 连接到 Azure 上的 MS SQL Server。我只是无法让它发挥作用。我找到了命令行工具 tsql,它应该
我有一个问题,即使我在这些设置中设置为 8.0,FreeTDS 仍然使用 4.2 版进行连接 我可以使用 tsql 进行连接,当我使用 tsql 时,它显示它正在使用 7.1(来自 8.0 的别名),
我有两台相同的服务器(称为测试和生产),Linux Red Hat Enterprise Linux Server 6.2 版(圣地亚哥)、PHP 5.4.2 版、Apache Apache 2.4.
我正在尝试从 Ubuntu 14.04.4 服务器连接到在 Windows 10 上运行的 Pervasive Sql Server。 我正在使用以下服务尝试连接到服务器: FreeTDS unixO
我正在使用安装在 OS X Snow Leopard 上的 FreeTDS 0.82 连接到 SQL Server 2005 数据库。 当我尝试连接 tsql 时,我得到了这个: tsql -S ab
我有一个 C 程序通过 FreeTDS 连接到 MSSQL 数据库. 我正在尝试执行一个 varchar 参数设置为类似“Saída Liberada”的存储过程,但它在 MS SQL 中以奇怪的字符
SQL语句下面 SELECT getdate() go 当我从 SQL Server management studio 运行时,它给出了 "Jul 27 2016 22:00:00.860" 当我从
将应用程序移动到具有更新软件的新服务器后(从 php 5.2.17 -> 5.3.15、FreeTDS 0.64 -> 0.82 移动) SELECT GETDATE() 和任何其他日期时间函数/列产
我们正在为数据库运行带有 Microsoft SQL Server 的 Linux 服务器。除了 FreeTDS 之外,还有什么好的(最好是开源的)c 库可供我们使用吗? 谢谢 最佳答案 不是真的。
我有一个 UBUNTU LAMP 设置。安装了所有必要的扩展 php5-odbcphp5-mssqlFREETDSunixODBC 在 CLI 中,我使用 isql 测试了与数据库的连接。和 tsql
我正在尝试使用 FreeTDS 连接到 MSSQL 2005 服务器。 但我收到“用户登录失败”错误。在 FreeTDS manual 故障排除部分中有一个部分。但它没有提到任何与之相关的可能错误。我
freetds v0.91 - tds 版本不匹配 我想在 Ubuntu 14.04 上使用 FreeBSD 连接到 Windows SQL Server。 FreeTDS 是使用 apt-get 安
我正在迁移一个连接到外部 MSSQL 数据库的 PHP 网站。新服务器是 Linux 服务器。我知道要让它工作,我需要一个适用于 Linux 的 ODBC 驱动程序,如下所示: 免费TDS Micro
我正在使用 FreeTDS 0.91 连接到远程 MSSQL 服务器,但到目前为止所有尝试都没有结果。 在我的 Unix 上执行 tsql 命令时,出现以下错误: locale is "en_US
我决定使用 FreeTDS 驱动程序和 unixODBC 来管理我的基于 LAMP 的应用程序与远程 MsSQL 数据库之间的 PDO 连接。不幸的是,驱动程序似乎没有读取 freetds.conf
我在使用 DBI 和 FreeTDS(在 Ubuntu 上)将一些数据插入 SQL Azure 时遇到了 Perl 的间歇性问题。可能会出现问题,并且忽略了某些行,然后我可以再次运行它而不会出现问题。
我正在寻找分步指南,如何在 Heroku 上安装 freetds。我需要从 ruby 脚本访问 Sql Server,不幸的是,Cedar 不支持开箱即用的 tinytds gem。我已经阅读了互
我在 Centos 7 Linux 机器上尝试通过 pyodbc 连接到 SQL 数据库。我了解到您需要设置 DSN,您可以通过安装 freetds 驱动程序并执行以下操作来实现: import py
我是一名优秀的程序员,十分优秀!