簡體   English   中英

使用其他查詢循環MySQL結果

[英]Looping MySQL Results With Additional Queries

我希望有人能夠幫助我概念化我正在編寫的PHP頁面的解決方案。

實際上,我在一個名為“服務器”的MySQL數據庫中有一個主表。 其中有四個字段; 部門服務器A服務器B服務器C。 對於上下文,部門條目是部門的名稱,並且serverA,serverB和serverC對應於每個部門的三台服務器的主機名。

我正在嘗試獲取部門,服務器A,服務器B和服務器C的名稱,然后使用該數據填充多個SQL查詢。 我將數據分為多個表以保持整潔和相互關系。 這就是我所擁有的;

<?php
$conn = mysqli_connect("server", "root", "root") or die('Error connecting to MySQLserver.');
mysqli_select_db($conn, "Database") or die("Failed to connect to database");
$sql = "SELECT * FROM Servers";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    $deptartment = $row['department']
    $serverA = $row['serverA'];
    $serverB = $row['serverB'];
    $serverC = $row['serverC'];
}
} else {
echo "Unable to connect to server.  Please check your settings.";
}
?>

, wherein record of serverA, the following happens; 然后,我想做的是一種 ,其中serverA的記錄發生以下情況;

<?php
$conn = mysqli_connect("server", "root", "root") or die('Error connecting to MySQLserver.');
mysqli_select_db($conn, "Database") or die("Failed to connect to database");
$sql = "SELECT * FROM Data WHERE `serverName` = '$serverA' ORDER BY `timestamp` DESC LIMIT 1";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
    $serverName = $row['serverName'];
    $serverType = $row['serverType'];
    $serverAge = $row['serverAge'];
}
} else {
echo "Unable to connection to server.  Please check your settings.";
}
?>

然后,我可以使用相同的理論遍歷serverB的結果,並讓serverB的每個記錄執行另一個查詢以獲取其他數據。

對於如何循環遍歷每個結果並用它填充其他查詢,我似乎在使用正確的語法。

有任何可能的指導嗎?

謝謝!

Sample Data:
department: Math
serverA: math-server-windows.school.edu
serverB: math-server-mac.school.edu
serverC: math-server-linux.school.edu

department: Psychology
serverA: psychology-server-windows.school.edu
serverB: psychology-server-mac.school.edu
serverC: psychology-server-linux.school.edu

department:  Arts
serverA: artsserver.school.edu
serverB: artsold.school.edu
serverC: artsbackup.school.edu

您可以使用JOIN簡化此過程。

Data的字段servername對應於服務器表中的serverAserverBserverC 因此,您可以運行如下查詢:

SELECT Data.*,
  A.serverA AS serverA, 
  B.serverB AS serverB, 
  C.serverC AS serverC 
FROM Data
JOIN servers as A on Data.servername = A.serverA
JOIN servers as B on Data.servername = B.serverB
JOIN servers as C on Data.servername = C.serverC
ORDER BY <whatever>

因此,現在每一行都將包含每個部門的服務器信息,因此可以像這樣遍歷結果:

while( $row = $result->fetch_assoc() ){
  echo "\nDept: ".$row['department'];
  echo "\nA: ".$row['serverA'];
  echo "\nB: ".$row['serverB'];
  echo "\nC: ".$row['serverB'];
}

暫無
暫無

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

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