3

昨日から一部の PHP で問題が発生し、Web を調べて、何か重要なものが欠けているという愚かな感覚がありました。

普段使い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 ファイルで使用されていますが、使用するprint_r $arrayと、配列がそのままであることが既に示されていますempty (0)。このコード ブロックにエラーが表示されることは間違いありませんが、" COUNT (x) AS y" に問題があるのでしょうか?

PS: MySQL クエリは機能し、以前に Workbench でテストしました。良いアドバイスをいただければ幸いです。:-)

良い1日を!

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つのレコードを取得していて、それを使用している間に問題が発生しているためです

于 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 に答える