已解决:我测试了将查询编写为存储过程,但它仍然在 php.ini 中报告错误。最终我发现,因为我有一些带有空值的列,PHP 正在奇怪地读取它们。令人失望的是 Perl 处理得更好,但是很好。
我正在使用带有 adodb 的 PHP 5.3.3 来访问 MS SQL Server 2012。我的大多数查询都很好,但我正在尝试使用通配符进行完全连接。
这是开部分:
on a_table.hostname LIKE '%' + r_table.Hostname + '%'
OR '%' + a_table.hostname like r_table.Name + '%'
当我在 SQL Studio 中执行查询时,我得到 1224 条记录。在 PHP 中,2406。我查看了 sql 服务器上的日志,它运行的查询是准确的,复制和粘贴时返回预期/正确数量的结果。
如果我在我的 PHP 中编辑查询并删除连接的 %s ,则结果与直接执行查询一致(如果通配符也从中删除)。
我已经使用 PHP 的 mssql 函数和 adodb 测试了查询,结果相同。
编辑:我刚刚用三种方式测试了查询:通过 Perl、Sql studio 和 PHP。Perl 和 SQL 工作室是一样的 - PHP 仍然是错误的。