Codeigniter mssql_query失败并显示“无法设置查询”错误消息

时间:2013-12-26 19:43:12

标签: sql sql-server codeigniter

我有一个CodeIgniter应用程序,可以访问57个MSSQL数据库,只需点击一下按钮即可生成月度报告。

当我生成报告时,它可以从大多数服务器访问和获取数据。但是,有些服务器只返回如下所示的错误消息。

我可以通过打开'db_debug'标志来生成Unable to set query错误消息。最后一行是mssql_get_last_message()的结果。

mssql_query(): Query failed
mssql_query(): Unable to set query
Query error: Changed database context to 'dbsdb'

这是我用来获取数据的查询

SELECT * FROM   [tblLogin] AS L 
                 LEFT JOIN [tblStation] AS S ON L.[strStation] = S.[strStation] 
                 LEFT JOIN (
                      SELECT [strStation], COUNT(DISTINCT(nRecordId)) as nOrders
                      FROM   [tblOrder]
                      WHERE  [timeOrderDate] >= '2013-12-03' AND
                             [timeOrderDate] <= '2013-12-26'
                      GROUP BY strStation
                 ) AS O ON O.[strStation] = S.[strStation]
WHERE  L.[timeLoginTime] >= '2013-12-03 00:00:00' AND L.[timeLoginTime] <= '2013-12-03 23:59:59'

奇怪的是,如果我将日期范围设置为仅一天,查询有时会起作用。例如,当日期范围为“2013-12-26”时,此查询有效。但是,当日期范围为“2013-12-03”时,它不起作用。当我使用查询分析器手动查询数据库时,“2013-12-03”获得172行,“2013-12-26”获得126行。

这些是一些可能有用的phpinfo数据。

mssql.connect_timeout = Unlimited
mssql.timeout = Unlimited
memory_limit = 2048M
max_execution_time = 0

这些是我用来获取数据的代码。

$sql = "...";
$dbgroup = array(
    'hostname' => ...,
    'username' => ...,
    'password' => ...,
    'database' => 'dbsdb',
    'dbdriver' => 'mssql',
    'db_debug' => true,
    'pconnect' => false,
);
$db = $this->load->database($dbgroup, true);
$result = $db->query($sql)->result();

1 个答案:

答案 0 :(得分:0)

我在组织中使用php和Zendframework 1遇到了同样的问题。不一致导致我们确定问题不在代码或服务器中,而是数据库主机限制我们的服务的结果。问题只发生在使用mssql的新ERP时。

不确定这对你是否一样。