我正在尝试使用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做这件事,我从来没有遇到过这个问题。
答案 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