繁体   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