3

从昨天开始,我在使用一些 PHP 时遇到了问题,浏览了网络并有一种愚蠢的感觉,我错过了一些重要的东西。

mysql_fetch_object通常使用,mysql_fetch_array尽管尝试过(没有帮助)。这是让我头疼的代码部分:

public static function get_datacenter_by_id($id) {
$result = mysql_query("SELECT COUNT(rack.id) AS Racks, COUNT(device.id) AS Devices, COUNT(card.id) AS Cards, COUNT(port.id) AS Ports 
          FROM datacenter, rack, device, card, port, location, building 
          WHERE location.id = building.location_id AND
          building.id = datacenter.building_id AND
          datacenter.id = '.$id.' AND
          rack.id = device.rack_id AND
          device.id = card.device_id AND
          (card.id = port.card_id1 OR
          card.id = port.card_id2)") or die ("Error in query: ".mysql_error());

$array = array();

while($row = mysql_fetch_object($result)) {
    $array[] = array($row->Racks, $row->Devices, $row->Cards, $row->Ports);                     
}

return $array;
}

$array 在另一个 .php 文件中使用,但 usingprint_r $array已经向您显示,该数组保持empty (0). 我很确定错误出现在这段代码中,“ COUNT (x) AS y”可能有问题吗?

PS:MySQL Query 工作,之前通过 Workbench 测试过。我会很感激一些好的建议!:-)

祝你今天过得愉快!

4

2 回答 2

0

而不是像这样使用它

while($row = mysql_fetch_object($result)) {
$array[] = array($row->Racks, $row->Devices, $row->Cards, $row->Ports);                     
}

你应该做这个

$row = mysql_fetch_object($result)
$array[] = $row->Racks;
$array[] = $row->Devices;
$array[] = $row->Cards;

因为您正在获取 1 条记录并在 while 中使用它会导致问题

于 2012-04-26T08:04:37.047 回答
0

这不是这么简单吗:

$result = mysql_query("SELECT COUNT(rack.id) AS Racks, COUNT(device.id) AS Devices,     COUNT(card.id) AS Cards, COUNT(port.id) AS Ports 
      FROM datacenter, rack, device, card, port, location, building 
      WHERE location.id = building.location_id AND
      building.id = datacenter.building_id AND
      datacenter.id = '" . $id . "' AND
      rack.id = device.rack_id AND
      device.id = card.device_id AND
      (card.id = port.card_id1 OR
      card.id = port.card_id2)") or die ("Error in query: ".mysql_error());

注意'.$id.'的修改。到 '" . $id . "'. 您的查询正在查找“.$id.”的数据中心 ID。

于 2012-04-26T08:06:42.677 回答