【发布时间】:2013-03-22 17:11:09
【问题描述】:
已解决:我测试了将查询编写为存储过程,然后再次测试 在 php.ini 中仍然报告不正确。最终我发现是因为 我有一些带有空值的列 PHP 正在奇怪地阅读它们。 令人失望的是 Perl 处理得更好,但是很好。
我正在使用 PHP 5.3.3 和 adodb 来访问 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 server 上的日志,它运行的查询是准确的,复制和粘贴时返回预期/正确数量的结果。
如果我在我的 PHP 中编辑查询并删除连接的 %s,则结果与直接执行查询一致(如果通配符也从中删除)。
我已经用 PHP 的 mssql 函数和 adodb 测试了查询,结果相同。
编辑:我刚刚用三种方式测试了查询:通过 Perl、Sql studio 和 PHP。 Perl 和 SQL 工作室是一样的 - PHP 仍然是错误的。
【问题讨论】:
-
连接是“.”在 php 中(相对于“+”)。是这个问题吗?
-
不,我发布的代码是使用加号作为连接的 SQL 查询。此外,如果是这种情况,它在 sql studio 中也行不通。不过感谢您的回复。
-
你用什么来获取 PHP 中返回的记录数?
-
您确定两次都执行完全相同的查询吗?
-
它似乎应该是:
on a_table.hostname LIKE '%' + r_table.Hostname + '%' OR a_table.hostname like '%' + r_table.Name + '%'(在您的查询中,'%'+放错了位置。)
标签: php sql-server adodb