从php ODBC查询返回多个结果集?

时间:2010-08-30 15:44:49

标签: php sql-server odbc database-connection

我在与MSSQL服务器的PHP ODBC连接中运行以下查询:

DECLARE @weekStart SMALLDATETIME;
SET     @weekStart = DATEADD(d,0, DATEDIFF(d,0,GETDATE()));             -- weekStart = TODAY @ 00:00:00 -- per http://weblogs.sqlteam.com/jeffs/archive/2007/01/02/56079.aspx
SET     @weekStart = DATEADD(d, 1-DATEPART(dw, GETDATE()), @weekStart); -- subtract to last SUN @ 00:00:00

SELECT
    DATEDIFF(week, Run_Date, @weekStart)
                            AS weeksAgo

    ,MIN(Current_List)      AS list

    ,COUNT(*)               AS cnt

    ,SUM(NoContact_90Days)  AS noContact90
    ,SUM(NoContact_180Days) AS noContact180

    ,SUM(NoMtg_180Days)     AS noMtg180
    ,SUM(NoMtg_360Days)     AS noMtg360
FROM
    [someDB].[DBO].[someTable]
WHERE
    Current_List<>''
GROUP BY
    DATEDIFF(week, Run_Date, @weekStart)
    ,Current_List
ORDER BY DATEDIFF(week, Run_Date, @weekStart)

;

不知怎的,当我通过我的连接运行它时,它似乎“破坏”连接进一步查询 - 也就是说,如果上面的查询是Q1,而其他一些简单的查询是Q2,那么以下工作正常:

$rs = odbc_exec($conn, $Q2);
var_dump($rs);  //  $rs is a valid result set

但是失败没有错误:

$rs1 = odbc_exec($conn, $Q1);

$rs2 = odbc_exec($conn, $Q2);
var_dump($rs2);  //  $rs2 is FALSE

在这两个例子中,Q2中的任何内容都没有改变,所以似乎Q1在某种程度上“破坏”了连接。

我已经玩了几天了,而且我遇到了一些事情让我觉得这是因为Q1返回了不止一个结果集,但我不太确定实际上是什么意思

以下是我的问题:

  1. ODBC的意味着什么 连接返回多个 结果集?
  2. 有没有办法搞定 这个工作?
  3. 谢谢!


    修改:其他问题

    1. 在处理多个记录集时,我保证会以相同的顺序返回吗?或者DBMS可能有一天会发回(rs1,rs2,rs3)而下一次会发回(rs3,rs1,rs2)?

0 个答案:

没有答案