[英]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.