在while循环中进行PHP和ODBC查询

时间:2015-01-13 21:36:33

标签: php sql-server odbc

我正在尝试使用php中的odbc在while循环中添加查询。

每次我尝试在使用odbc时在while循环中添加查询时,apache进程都会获取所有cpu性能然后,我必须手动终止它并让看门狗重新启动它。

这是我的代码:

<?php

// Include DB configs
require_once( "dbconfig.inc" );

// Microsoft SQL Server Driver
$link = odbc_connect("Driver=$driver;Server=$server;Database=$database;", $username, $password) or die ("Can't connect to MS SQL Server");

// Query the tickets
$query = odbc_exec($link, "
    SELECT
        TicketID,
        ...
    FROM
        ...
    WHERE
        ...
") or die ( "<p>".odbc_errormsg() );

// While loop
while($data = odbc_fetch_array($query)){

    // Define variables
    $ticketID = $data['TicketID'];

    // Now check how many comments that are in the ticket
    $queryCnt = odbc_exec($link, "
    SELECT
        COUNT(1) AS NumOfComments
    FROM
        ...
    WHERE
        TicketID = '" . $ticketID . "'
    ") or die ( "<p>".odbc_errormsg() );

    // Add returned count in the variable
    $num = odbc_fetch_array($queryCnt);
    $numOfComments = $num['NumOfComments'];

    // Print result
    echo "Ticket: " . $ticketID . " is containing " . $numOfComments . " comments.\n";
}
// Close DB
odbc_close($link);

?>

这可能是odbc本身的一个问题,因为我总是用mysql做这件事,我从来没有遇到过这个问题。

1 个答案:

答案 0 :(得分:0)

这里没有子查询,如果没有评论,您可能需要左连接。你没有提供太多细节,但这样的事情应该很接近。

select t.TicketID
    , COUNT(c.*) as NumComments
from Ticket t
left join Comments c on c.TicketID = t.TicketID
group by t.TicketID