簡體   English   中英

PHP PDO foreach變量

[英]PHP PDO foreach variables

我目前正在研究一個PHP腳本,該腳本使用pdo訪問數據庫表。 試圖弄清楚這最后一件事就差不多完成了。 我對PHP還是比較陌生,很可能可以四處看看,我只是不知道要尋找什么。

我會告訴你我所擁有的,我有一個稱為服務器的表。 它有一列稱為位置(每行中的值是USA,CANADA,MEXICO和EU)。 然后,每個位置都有對應於服務器表的另一個表(美國,加拿大,墨西哥和歐盟)。 然后在每個具有該位置的表中都有一個名為SLOTS的列,說第一行有2,第二行有3,依此類推。我想獲取所有這些值的總和,然后將其放入變量中,然后將它們分別顯示在同一頁面上。 我現在擁有的東西可以正常工作,但是我想在添加更多位置時使用它,而不必回頭添加它,它可以從服務器表的location列中獲取,並使其更加整潔然后是。 我一直在研究變量變量,但不確定在這種情況下它是否可以工作或如何工作?

我有的

$usaresult = $db->query("SELECT SUM(SLOTS) AS value_sum FROM USA");
$usarow = $usaresult->fetch(PDO::FETCH_ASSOC);
$usaslots = $usarow['value_sum'];
if(!isset($usarow['value_sum'])) {
    $usaslots = '0';
}

$canadaresult = $db->query("SELECT SUM(SLOTS) AS value_sum FROM CANADA");
$canadarow = $canadaresult->fetch(PDO::FETCH_ASSOC);
$canadaslots = $canadarow['value_sum'];
if(!isset($canadarow['value_sum'])) {
    $canadaslots = '0';
}

$mexicoresult = $db->query("SELECT SUM(SLOTS) AS value_sum FROM MEXICO");
$mexicorow = $mexicoresult->fetch(PDO::FETCH_ASSOC);
$mexicoslots = $mexicorow['value_sum'];
if(!isset($mexicorow['value_sum'])) {
    $mexicoslots = '0';
}

$euresult = $db->query("SELECT SUM(SLOTS) AS value_sum FROM EU");
$eurow = $euresult->fetch(PDO::FETCH_ASSOC);
$euslots = $eurow['value_sum'];
if(!isset($eurow['value_sum'])) {
    $euslots = '0';
}

這是我一直在想的東西,不起作用,可能已經完全失效,也許可以做得更好,但是我應該對我正在尋找的東西有所了解嗎?

$query = "SELECT * FROM servers";

try 
{ 
    $stmt = $db->prepare($query); 
    $stmt->execute();
    $result = $stmt->fetchAll();
}

catch(PDOException $ex) 
{ 
    die("Failed to run query: " . $ex->getMessage()); 
}

foreach ($result as $row) {
    ${$row['location']}result = $db->query("SELECT SUM(SLOTS) AS value_sum FROM $row['location']");
    ${$row['location']}row = ${$row['location']}result->fetch(PDO::FETCH_ASSOC);
    ${$row['location']}slots = ${$row['location']}row['value_sum'];
    if(!isset(${$row['location']}row['value_sum'])) {
    ${$row['location']}slots = '0';
    }
}

如果有人可以幫助我,或為我指出正確的方向,那就太好了。 預先感謝任何人。

為什么不為所有服務器使用一張表,例如這樣

CREATE TABLE `servers` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `location` varchar(255) NOT NULL,
  `slots` int(11) NOT NULL,
  PRIMARY KEY (`ID`)
) 

然后像這樣查詢它

SELECT location, slots from servers group by location 

這將整齊地匯總每個位置的插槽,每個位置可以有多行,並且您可以隨意添加位置,而無需添加表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM