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